只是想检查一个问题的完整性。. .
我试图确定用户遇到的性能问题是否是应用程序、它所在的服务器或 SQL Server 的结果。
查看 perfmon,我可以看到非常高的 Avg。磁盘写入队列。查看 SQL ASYNC_IO_COMPLETION和OLEDB是更突出的等待类型。这些向我表明,SQL 不是性能不佳的决定性因素。
CXPACKET waittypes的存在率很高,我认为这是启用并行性和基础索引的高度碎片以及过时统计信息的结果。
别人怎么看?我可以采取哪些其他步骤来证明(或反驳)我关于磁盘速度慢的理论。
谢谢 !
这里有几个不同的问题:
问:“查看 perfmon 我可以看到非常高的平均磁盘写入队列。”
该 Perfmon 计数器不再与 SQL Server 相关。SQL Server 将IO 操作一起批处理,这里看到大跳动是正常的。相反,检查 Avg Disk Sec/Read 和 sec/Write 的计数器。这告诉您存储响应您的请求的速度有多快。缺点是它仅在驱动器(卷、安装点)级别。要获取特定文件的 IO 统计信息,请查询 sys.dm_io_virtual_file_stats。David Pless 在这里有一个很好的查询:
关联
问:“查看 SQL ASYNC_IO_COMPLETION 和 OLEDB 是更突出的等待类型。这些对我来说表明 SQL 不是性能不佳的决定性因素。”
ASYNC_IO_COMPLETION 通常是在后台异步发生的数据文件写入。当您插入/更新/删除内容时,SQL Server 必须立即将数据放入日志文件中——这就是 WRITELOG 等待。它更改内存中的数据页,然后将这些页缓存起来直到以后。ASYNC_IO_COMPLETION 等待不会阻碍最终用户。它可能表明数据文件写入的驱动器性能较慢,但这是系统瓶颈,而不是面向最终用户的瓶颈。
根据我的经验,OLEDB 通常是由 Spotlight、SQL Sentry、Idera SQL DM 等性能监控工具引起的,这些工具正在运行跟踪并通过网络获取性能数据。
问:别人怎么看?我可以采取哪些其他步骤来证明(或反驳)我关于磁盘速度慢的理论。
我在这里有一个关于如何做到这一点的视频:
http://www.brentozar.com/archive/2011/08/how-prove-its-san-problem-webcast-video/
短篇小说 - 根据您在此处描述的内容,IO 可能不是您最大的问题。