我有一个表,它有 20 亿多行和 8 个分区的 7 个索引,只有标准 SQL Server AUTOUPDATE
维护统计信息,它只会非常不频繁地更新统计信息。每晚大约有 130 万条记录添加到此表中。显然,这不是有意义的行为,但由于这是一个生产服务器,我非常担心在不知道性能成本的情况下进行更新。我在任何测试环境中都没有完整的表格。 (这张 table 是最严重的违规者,还有其他的几乎同样糟糕。)
在确定与定期更新统计数据相关的性能成本时,我应该在哪里/什么看?
应多久更新一次统计数据?应FULLSCAN
曾经被使用过吗?
编辑
我认为 traceflag 2371 对我来说将是一个危险的工具,因为它可以在我需要一切启动和运行的白天触发自己的更新,而不是我控制的窗口。
在做了相当多的研究之后,我认为这个问题已经发展到包括是否使用 sp_updatestats
(这看起来像一把大锤,因为如果 >1 行已更新,它会更新统计信息 Erin Stellato )或 UPDATE STATISTICS
如果 UPDATE STATISTICS
那么那么大的 table 上的百分比是多少。十亿行上的 10% 样本需要大约 2 小时才能完成。
如果它是相关的 PK 部分是一个升序的日期时间列。
结束编辑
最佳答案
如果您使用的是 SQL Server 2008 R2 SP1 或更新版本,请尝试使用跟踪标志 2371。它会降低更新阈值。
http://blogs.msdn.com/b/saponsqlserver/archive/2011/09/13/10207658.aspx
关于sql-server - 如何监控更新表统计信息的成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18792517/