Vic*_*tor 7 performance sql-server statistics sql-server-2008-r2
我们的生产 SQL Server 2008 R2 有时开始执行缓慢:所有查询开始工作太慢(有时所有查询只是挂起并等待某些事情然后继续)。这通常持续几分钟。
我读过有时自动更新统计信息会降低服务器的速度:
我看到有时会为相当大的索引(1.7 GB 大小,550 万行的表)发生自动更新统计信息。我可以通过 STATS_DATE 看到最近更新统计数据的日期,但是我看不到这个过程的持续时间。
请您建议我如何查看统计数据自动更新的持续时间?或者如何确定自动更新统计信息会导致问题?
谢谢你。
PS 在我们遇到这些性能问题后,我开始监视等待统计信息。最高等待类型是 CXPACKET。它占所有等待的 36% 到 60%。而在早上,当工作日开始时,它在工作日内达到最大值(用户通常每天使用应用程序工作 12 小时)。第二高的等待类型是 SOS_SCHEDULER_YIELD (15%-20%)。
我在互联网上发现了一些帖子,其中提到 CXPACKET 等待时间显示自动更新统计数据会产生问题。但我还没有找到这种说法的真正证据。我很清楚 CXPACKET 可以显示并行执行 SQL 查询的问题(来自http://www.dbadiaries.com/reducing-sql-server-cxpacket-wait-type)。
您可以使用Auto Stats Event Class with SQL Trace获取这些数据。事件的数据列之一是Duration。根据上面引用的 BOL 文档,这里引用:
持续时间:事件花费的时间(以微秒为单位)。
这应该可以让您很好地了解自动统计数据何时/需要多长时间。如果您看到很多性能停止自动更新统计信息(同步),您可以考虑使用异步自动更新统计信息。启用此选项将告诉查询优化器不要等待统计信息更新以继续编译查询。这是防止统计数据更新直接干扰的一种解决方案,但当然,您正在为该特定查询编译牺牲新的统计数据。
有关这方面的更多信息,请参阅有关 Statistics的MSDN 参考。
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |