2

我们有一个SQL Server 2012实例,具有自动statitics设置为ON为DB:当它设置为自动更新时,为什么这些SQL Server统计信息已过时?

enter image description here

但后来我跑了查询,以检查一些统计数据,以及一些尚未更新在一段时间:

enter image description here

  1. 为什么会出现这种情况?是否有规则来确定SQL Server是否更新这些索引未触发的统计信息?
  2. 我需要照顾吗?我如何知道我是否需要更新它们,或者如果它们对我造成性能问题?

谢谢!

+0

你确定桌子上有变化吗?都是统计错误的,或者只是对于一些表格,如果只是一些表格,他们有什么共同点? – RealCheeseLord

回答

2

即使你设置自动更新的统计数据为真,他们将只更新时阈值一直reached..this是不同的不同版本

阈值的SQL Server 2012或以上:

  1. 表的大小已经从0去> 0行

  2. 当统计聚集在表中的行的数量为500或更小,引线的colmodctr统计对象的ing列已经改变了500多个,此后

  3. 当统计信息被收集并且统计对象的前导列的colmodctr已经改变超过500 +在表中的行数的20%时,统计聚集

对于SQLServer的2016年,很少有大的变化和SQL更新统计用新算法(读作比老版本更频繁地)

我需要照顾吗?我如何知道我是否需要更新它们,或者如果它们对我造成性能问题?

通常人们在周末安排维护工作,这包括索引重建/统计更新..

这通常应该照顾大多数databases.In你的情况,如果你看到的性能问题,由于无效统计,你可以更新他们manually.We做到每周一次,但sites like StackOverflow does it more often

update stats tablename 

延伸阅读/引用:
Statistics Used by the Query Optimizer in Microsoft SQL Server 2008
Understanding When Statistics Will Automatically Update

+1

谢谢..这是有道理的。其中一些表格不够活跃,所以它很有意义。还有两个问题:1)“通常人们在周末安排维护工作,这包括索引重建/统计更新.._”。我明白需要手动索引重建,但是如果AUTO STATS打开,我不需要手动进行统计更新,对吧? 2)“如果您看到由于无效统计而导致的性能问题”。我如何知道我的表现问题是否与无效统计相关?我似乎记得一些关于“估计与实际行数”的内容。 – RPM1984

+0

更新统计信息会导致很多IO,因此在休息日期间进行调度是我可以考虑关闭的一个原因。第二个是如果sql在执行时发现查询的最新状态不是最新的,则查询执行会在短时间内停止的时间,直到统计信息重建 – TheGameiswar

+0

估计行数vs实际行数是正确的方法 – TheGameiswar

相关问题