我让 sp_BlizFirst 每 12 分钟运行几天,以捕获各种统计数据。
不过我逐渐意识到,除了 I/O 停顿之外,它似乎并没有收集很多与文件相关的性能统计数据。
是否有足够的信息来根据等待统计信息和 I/O 停顿来确定 I/O 是否有问题?我在 Blitz 表中找不到任何关于磁盘平均的提及。读取时间,磁盘平均。写时间,平均。我认为应该考虑磁盘队列长度吗?
任何人都可以就以下内容提供一些反馈吗?我的并行统计数据肯定需要正确查看 (CXPACKET),但我也对我的磁盘 i/o 性能感到好奇。我认为 OLDEDB 等待是由链接服务器和 Idera SQL 诊断管理器每 1 分钟监控一次实例引起的。
从https://www.sqlskills.com/blogs/paul/are-io-latencies-killing-your-performance/我读到以下内容:每个人对什么是好的或坏的 I/O 延迟都有自己的想法,这是我的采取: 优秀:< 1 毫秒 非常好:< 5 毫秒 好:5 – 10 毫秒 差:10 – 20 毫秒 差:20 – 100 毫秒 非常差:100 – 500 毫秒 哇!:> 500 毫秒
如果我按照那个去做,我属于坏类别。
这是我的等待统计数据:
服务器 1
平均读取 I/O 停顿为 23.91
最大读取 I/O 停顿为 1162
平均写入 I/O 停顿为 0.71
最大写入 I/O 停顿为 139
服务器 2
平均读取 I/O 停顿为 26.28
MAX Read I/O Stall 为 428
平均写入 I/O 停顿为 2.60
最大写入 I/O 停顿为 667
免责声明:我是 sp_BlitzFirst 和 First Responder Kit 的作者之一。
等待统计部分位于顶部是有原因的:您需要关注最常见的等待类型。如果 SQL Server 不等待它们,那么驱动器的速度有多快或多慢并不重要。很好的例子:假设您有一个只读数据库托管在服务器上,该服务器具有足够的内存来缓存整个数据库,并且您的查询都不会碰巧命中 TempDB。一旦数据进入缓存,您的驱动器有多慢是否重要?Kinda - 用于备份和索引重建等维护任务 - 但不用于最终用户查询。
现在,查看服务器的前 3 个等待时间:
哟,伙计——你最重要的等待时间比你的存储等待时间大十倍。
忘记存储:你找错了树。专注于最重要的等待类型。要调整并行性,请转到https://BrentOzar.com/go/cxpacket。短篇小说: