mel*_*onk 3 sql-server dbcc sql-server-2008-r2
我一直在使用 DBCC Traceon (3502, 3504, 3605, -1) 因为它在博客中被推荐用于发现与 I/O 相关的性能问题。我正在运行 MS SQL Server 2008 R2 SP1
我的 SQL 日志文件中的结果看起来像这样(数字有点模糊):
即将记录检查点结束
最后一个目标未完成 2,avgWriteLatency 40ms
平均吞吐量:0.67 MB/秒,I/O 饱和度:79,上下文切换 201
FlushCache:在 1447 毫秒内清理了 69 次写入的 125 个缓冲区(避免了 0 个新的脏缓冲区)
ckpt dbid 9 第一阶段结束 (8)
即将登录检查点开始。
我真的不知道如何阅读这篇文章,或者以一种我从中得到任何真正有意义的东西的方式来分解它。
“最后一个目标未完成”是什么意思?
平均写入延迟是否意味着每次写入所需的开销时间?或写入之间的时间?40ms 似乎很高,物理驱动器是 1TB,并且是 RAID5 配置。
什么是 I/O 饱和?
它与上下文切换有什么关系。我假设上下文切换与多任务处理有关。在作业/写入之间切换。
刷新缓存。我意识到这与清除缓存有关。什么是Buf?这些数据页是需要写入的吗?什么是肮脏的 Buf?为什么要避免它们?
详细的分解将不胜感激。
您打开的跟踪标志将告诉您检查点在幕后做了什么。
有关上述内容的更多详细信息,请参阅 Paul Randall 的博客文章。此外,优化性能的微调有一个很好的信息 - 特别是在搜索尖峰部分。
一些真正的内部阅读:
与其直接关注检查点行为,我建议您查看 DMV 和 Perfmon(与磁盘相关)-
您可以参考调查 I/O 瓶颈