sql-server - 如何监控更新表统计信息的成本?

标签 sql-server tsql sql-server-2012

我有一个表,它有 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/

相关文章:

sql-server - RODBC 连接的 SQL Server 查询失败,可在 SQL Server 中运行

sql-server - 操作数类型冲突

sql-server - 将 OPENQUERY 与链接服务器结合使用的 WHERE 子句

sql-server - MS Access 链接表中的可为 Null 的 bool 字段

sql - 使用 2 个版本的 SQL Server 的排序规则冲突

sql-server-2008 - 如何从sql server 2008中的日期获取月份的周数

sql - NULL 有数据类型吗?

sql - 选择 MAX 日期加上 ID 值

c# - 在 SQL Server 中使用 sql_variant 而不是 varchar 有什么好处吗?

SQL - 即使出现错误也继续运行所有 SQL 语句