当这些SQL Server统计信息设置为自动更新时,为什么这些统计信息已过时?

时间:2017-08-16 06:00:53

标签: sql-server sql-server-2012 sqlperformance database-indexes

我们有一个SQL Server 2012实例,数据库的自动状态设置为ON:

enter image description here

但后来我运行了一个查询来查看一些统计信息,并且某些尚未及时更新:

enter image description here

  1. 为什么会这样? SQL Server是否更新了尚未被这些索引触发的统计信息,是否有规则?
  2. 我需要关心吗?我怎么知道我是否需要更新它们,或者它们是否会导致性能问题?
  3. 谢谢!

1 个答案:

答案 0 :(得分:3)

即使您将自动更新统计信息设置为true,它们也只会在达到阈值时更新..这对于不同版本是不同的

SQL Server 2012或更早版本的阈值:

  1. 表格大小从0变为> 0行

  2. 收集统计信息时表中的行数为500或更少,统计对象的前导列的colmodctr自那时起已更改500以上

  3. 收集统计信息时,该表有超过500行,统计对象的前导列的colmodctr在统计信息时已更改超过表中行数的500 + 20%聚集

  4. 对于SQLServer 2016,使用新算法进行的主要更改和SQL更新统计信息很少(读取比旧版本更频繁)

      

    我需要关心吗?我怎么知道我是否需要更新它们,或者它们是否会导致性能问题?

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

    这通常应该处理大多数数据库。在您的情况下,如果您因为统计信息无效而看到性能问题,您可以手动更新它们。我们每周都会更新一次,但是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

相关问题