Mar*_*lli 1 sql-server optimization statistics sql-server-2014
我每周使用Ola Hallengren 的解决方案更新统计数据。
根据下面的文章,我正在考虑启用 Auto Stats Async 并打开跟踪标志 2371。
现在,我的数据库的 async 选项为 false:
此外,来自SQL Server 2008 及更高版本的重要修补程序:
此设置允许异步自动更新统计信息,同时您当前运行的查询继续使用旧统计信息,直到更新的统计信息可供使用,从而降低不可预测的查询性能。对此的替代方案(这是默认设置)是暂停查询执行(仅适用于使用该对象统计信息的查询),同时为该对象自动同步更新统计信息。根据对象的大小以及硬件和 I/O 子系统,这可能需要几秒钟到几分钟的时间。
题:
在测试环境中,在将 Auto Update Stats Async 设置为 ON 之前/之后,可以进行哪些好的简单测试?
在什么情况下我更有可能从异步自动更新统计信息中受益?
数据库 500GB+,大表。
我认为您最好在同步和异步下测试您的实际工作负载,看看您是否观察到任何差异。想出一个适合特定功能的最佳位置有点倒退。
通常,当您不关心触发统计信息更新的查询是否仍在上次使用旧统计信息运行时,异步主要是有益的(或者用户无法等待足够长的时间让统计信息更新发生并运行查询) . 其他人不容易告诉您阈值 - 这取决于统计信息更新需要多长时间(因此取决于数据大小、I/O 子系统、样本大小等),统计信息更新对查询有多大帮助(例如,它可能会也可能不会生成不同的计划),而且我们不知道您的最终用户对“此查询花费的时间太长”的定义。
同样,通常,当您知道统计数据快速下降,并且任何使用陈旧统计数据运行的查询都会受到影响时,同步是有益的。在这种情况下,您应该清楚,统计信息更新的持续时间 + 改进查询的时间平均小于使用陈旧统计信息的查询持续时间。