sha*_*shi 4 sql-server-2005 sql-server wait-types
最近,对数据库的很多查询都超时了。在调查时,我发现查询处于暂停状态,wait_type 为 PageIOLatch_Sh。我之前没有注意到服务器上有这么多查询被挂起。自星期六以来,这种情况一直在发生。
几周前,数据库服务器上的 CPU 一直处于 100% 的状态。在尝试修复该问题时,我更改了几个未真正使用的索引,并导致了 user_scans。更改索引后,服务器上的 cpu 使用率下降,站点的性能通常更快,并且现在查看索引统计数据时发生了大量 user_seeks,我认为这是一个好兆头。
然而,现在一两周后,即使 cpu 使用率不是 100,大量查询已经开始超时,并且观察到 PageIoLatch_Sh 等待。有趣的是,即使 cpu 为 100%,这些超时也不会以如此高的频率发生。
现在维护索引也会减慢 sql server 的处理速度,所以我想知道新索引是否会导致更多的等待和超时?
根据您提供的背景信息,您似乎已将服务器上的争用点从 CPU 移至 IO,这是实施针对特定麻烦查询的索引策略的结果。
在大多数情况下(没有详细说明您的索引策略是什么),这是预期的行为,因为 CPU 不再是争用点,WAITS 自然会发生在其他地方。
您现在看到的性能问题不一定是由您应用的索引修改引起的。需要进一步调查确定负责 IO 等待/以及您看到的超时的特定查询。您想查看每个场景的执行计划,以确定可能的优化区域(首先查找通常不需要的操作,例如隐式转换、表扫描等)。
不想自以为是,但是由于参数嗅探导致查询计划选择不当,我经常在客户环境中遇到查询超时。这也可能是值得研究的事情。
要在调查期间使用一些方便的查询,请查看Glenn Berry 的 SQL Server 诊断查询。那里有许多用于查看 IO 的奇妙查询,例如哪些数据库负责最多的 IO,哪些数据库数据文件看到最多的活动,哪些查询导致最多的读/写等。
归档时间: |
|
查看次数: |
5735 次 |
最近记录: |