gpt4 book ai didi

sql - 如果 SQL Server 统计信息在负载和非高峰使用情况下更新,它们会收集不同的数据吗?

转载 作者:行者123 更新时间:2023-12-02 08:26:31 25 4
gpt4 key购买 nike

好吧,基本问题是:有没有人听说过任何暗示统计数据需要在日常使用情况下更新才能有效(而不是在非高峰时段)的情况?

我们最近遇到了一个数据库问题,查询计划偏离了轨道,并决定使用表扫描而不是查找。这当然会导致严重的锁定问题,并在我们跟踪索引并更新正确的统计数据时导致客户延迟。

查询计划似乎是我们每周在系统上运行的维护计划的结果。该计划的最后步骤之一是更新统计数据。最近唯一改变的是,统计更新的样本设置为 10%,而不是之前的 30%。 (我们现在已将其改回)

据我们采访过的一位 DBA 表示,我们需要在加载期间更新统计信息,否则 SQL 将无法计算最佳数据的统计信息。他声称,如果您在低使用时间更新统计数据(我们目前正在这样做),那么统计数据将不会那么准确。

这违背了我对 SQL 统计信息的理解,而且我在网上找不到任何信息告诉我应该随时更新统计信息。

最佳答案

他错了(另一个 DBA)。表统计信息是您存储在列中的数据的函数,与服务器负载完全无关。事实上,在高峰时段更新统计数据几乎是最糟糕的时间(在更新运行时更新统计数据显然会对性能产生有害影响)。

在非高峰时段使用 FULLSCAN 更新您的统计信息,以获得最大的准确性,然后就不要管它们了。

编辑:如http://blogs.msdn.com/b/chrissk/archive/2008/08/27/do-we-need-to-run-update-statistics-with-fullscan.aspx指出,在某些情况下,使用全扫描的统计数据可能不是特别有用(基本上,如果您有一个要大量修改数据的表)。如果表中足够多的行发生更改(我认为大约 500 行或 20%,以较大者为准),自动统计信息将重建您的统计信息,然后优先使用这些自动重建的统计信息而不是全扫描。您可以手动管理统计信息(推荐),或者保留自动统计信息,但也可以手动安排统计信息重建。

关于sql - 如果 SQL Server 统计信息在负载和非高峰使用情况下更新,它们会收集不同的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904123/

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