我有一个表,在8个分区中有20亿个行和7个索引,只有标准的SQL Server AUTOUPDATE
来维护统计信息,这只会很少更新统计信息。每晚大约有130万条记录被添加到此表中。显然,这不是有意义的行为,但由于这是一个生产服务器,我非常警惕只是在不知道性能成本的情况下进行更新。我没有在任何测试环境中使用完整的表。 (这张桌子是最糟糕的罪犯,还有其他人几乎一样糟糕。)
在确定与定期更新统计数据相关的绩效成本时,我应该在哪里/看什么?
统计数据应该多久更新一次?应该FULLSCAN
使用吗?
修改
我认为traceflag 2371对我来说是一个危险的工具,因为它可以触发自己的更新,当我需要一切正常运行而不是我控制的窗口时。
经过相当多的研究后,我认为这个问题已经发展到包括是否使用sp_updatestats
(这似乎是一个大锤,因为如果> 1行已经更新,它会更新统计数据Erin Stellato )或UPDATE STATISTICS
以及UPDATE STATISTICS
那么表上的百分比是多少。 10亿行的10%样本需要大约2个小时才能完成。
如果相关部分PK是升序日期时间列。
结束编辑
答案 0 :(得分:1)
如果您使用的是SQL Server 2008 R2 SP1或更高版本,请尝试使用跟踪标志2371.它会降低更新阈值。 http://blogs.msdn.com/b/saponsqlserver/archive/2011/09/13/10207658.aspx