gpt4 book ai didi

sql-server - sp_updatestats 应该多久调用一次?

转载 作者:行者123 更新时间:2023-12-02 08:36:09 24 4
gpt4 key购买 nike

一个question of mine它处理缓慢执行的查询,向我介绍了 sp_updatestats() 函数。我想采取主动措施定期调用它,而不是等待我的查询在工作时间内随机开始超时。我正在考虑在每晚午夜运行它。我的问题是:

  1. 是否有一种有用的方法来确定何时应调用此过程,而不是每晚盲目运行它?文档称 SQL Server 会自行更新这些统计信息。但以什么频率呢?我如何知道何时需要介入并手动执行?

  2. 运行此过程时数据库是否锁定?完成这件事似乎需要大约四五分钟。在此期间数据库是否可以访问或者尝试的查询是否会被阻止?我的测试表明我仍然可以运行查询,但我不确定这是否只是因为我很幸运,查询了当时未计算统计数据的表。

最佳答案

这里引用 books on line :

sp_updatestats updates only the statistics that require updating based on the rowmodctr information in the sys.sysindexes catalog view, thus avoiding unnecessary updates of statistics on unchanged rows.

因此,您可以每天运行 UPDATE STATS,但它可能不会执行任何操作。

Paul Randal's - How rowmodctr works

Kendra Little's article - Stale Statistics

White Paper for 2008

摘自 Kalen Delany 所著的 SQL Server 内部原理书籍 2008。如果您没有这本书,您应该买一本。

Before 2008, rowmodctr was used. After 2008, colmodctr is being used.

These statistics are being used to determine when the recompile threshold (RT) is exceeded for a table and statistics are deemed staled and need to be updated.

For small tables, at least 500 changes have to occur. For large tables, at least 500 changes plus 20% of number of rows. For very tiny tables, at least 6 changes.

Last but not least, there are FULL, SAMPLE N %, and RE-SAMPLE options which determine how many rows to scan to create the new statistics.

所以...

简而言之,这意味着什么?

当我每周重新组织一次索引时,我会运行更新统计信息。我在周末早些时候这样做,这样如果系统变慢就没有人提示。到目前为止,这对我来说很有效,几乎没有遇到任何问题。

关于sql-server - sp_updatestats 应该多久调用一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com