PAGEIOLATCH_SH与部分驱动器故障有关?

问题描述

| 相关技术: sql Server 2008 R2 RAID 5(4个磁盘) Windows Server 2008 作为序言,我们的RAID 5阵列的磁盘部分出现故障。未检测到故障,但在周末计划外断电和UPS发生故障之后,驱动器指示灯会定期呈琥珀色闪烁(琥珀色常亮表示驱动器出现故障)。中断发生在星期六,在注意到一个“ PAGEIOLATCH_SH”错误并阅读了这篇文章后,我在星期二发现了曙光。sql Server中的PAGEIOLATCH_SH等待类型是什么? (以及其他)。我们已经更换了驱动器并让其重建,但是我仍然看到错误。 该查询通过一个视图针对大型表,该视图在基础表上具有多个索引。我已经重建了索引,重新保存了视图,希望有更好的执行路径,并简化了查询。没有任何东西可以解决问题。自2006年以来,该查询一直没有问题,并且在升级sql Server 2008或R2时都没有问题,这两者在它们首次可用时都已应用。 最初,执行计划显示了相当均匀的分布,但是现在,它显示了第二项中的大多数,即“排序(不同的排序)”,其中约30%的索引寻求者分配。时间过去是2到10秒,但是现在超过2分钟。 此时,我不确定如何找出导致问题的原因。我认为这是我找不到的损坏数据,或者查询已将自身重新优化到远非最佳的状态,或者RAID出现问题而无法启动任何灯光或警告。 我已经完成了PAGEIOLATCH_SH和类似问题通常所需的工作,并且这些索引不仅看起来正确,而且到目前为止已经工作了多年。为了确保驱动器正常工作,我还做了所有我想做的事情。我的问题基本上是在这种情况下如何诊断问题的根源? 编辑:发现服务器实际上并没有因断电而停机,但是它旁边的机架却停了下来。不知道为什么驱动器会部分故障,但是此时看来这是偶然的。     

解决方法

        您看到许多小的“ 0”等待,还是很少的大等待?
select * from sys.dm_os_wait_stats
where wait_type = \'PAGEIOLATCH_SH\';
确切的结果是什么(计数,总等待时间,最大等待时间)。 许多小的等待将指示查询计划中的更改。将查询的逻辑读取数与基线数进行比较(如果可能)将证实这一点(逻辑读取数增加)。此外,如果可能的话,比较计划将有助于隔离问题。 很少的等待会表明确实存在驱动器问题(长时间等待IO)。在错误日志中记录的错误833将证实这一点(
SQL Server has encountered ... occurrence(s) of I/O requests taking longer than ... seconds to complete
)。