4

我有一个跨 8 个分区有 20 亿多行和 7 个索引的表,它只有标准 SQL ServerAUTOUPDATE来维护统计信息,它只很少更新统计信息。每晚大约有 130 万条记录添加到此表中。显然,这不是有意义的行为,但由于这是一个生产服务器,我非常警惕在不知道性能成本的情况下点击更新。我在任何测试环境中都没有完整的表格。(这张桌子是最糟糕的,还有其他的几乎一样糟糕。)

在确定与定期更新统计数据相关的性能成本时,我应该在哪里/什么看?

统计数据应该多久更新一次?应该FULLSCAN使用吗?

编辑

我认为 traceflag 2371 对我来说将是一个危险的工具,因为它可以在我需要所有东西启动并运行而不是我控制的窗口时触发它自己的更新。

在做了相当多的研究之后,我认为这个问题已经发展到包括是否使用sp_updatestats(这似乎是一个大锤,因为如果 >1 行已更新Erin Stellato ,它会更新统计信息)或者UPDATE STATISTICS如果UPDATE STATISTICS那么大的桌子上的百分比是多少. 十亿行的 10% 样本大约需要 2 小时才能完成。

如果它是 PK 的相关部分,则它是一个升序的日期时间列。

结束编辑

4

1 回答 1

1

如果您使用的是 SQL Server 2008 R2 SP1 或更新版本,请尝试使用跟踪标志 2371。它会降低更新阈值。 http://blogs.msdn.com/b/saponsqlserver/archive/2011/09/13/10207658.aspx

于 2013-09-13T21:14:05.657 回答