соответствующие технологии:
SQL Server 2008 R2
RAID 5 (4 диска)
Windows Server 2008
В качестве предисловия в нашем массиве RAID 5 диск частично вышел из строя. Сбой не был обнаружен, но индикатор привода периодически мигал желтым цветом (непрерывный желтый указывает на сбой привода) после незапланированного отключения питания в выходные дни и сбоя ИБП. Отключение произошло в субботу, и я нашел свет во вторник после того, как заметил ошибку «PAGEIOLATCH_SH» и прочитал сообщение Что такое тип ожидания PAGEIOLATCH_SH в SQL Server? (среди прочих). Мы заменили диск и позволили восстановить его, но я все еще вижу ошибку.
Запрос относится к большой таблице в представлении, имеющем несколько индексов для базовых таблиц. Я перестроил индексы, заново сохранил представление в надежде на лучший путь выполнения и упростил запрос. Ничто не устранило проблему. Запрос выполнялся без проблем с 2006 года и не имел проблем с обновлением до SQL Server 2008 или R2, оба из которых были применены, когда они впервые стали доступны.
Изначально план выполнения показывал довольно равномерное распределение, но теперь он показывает большинство по второму пункту, «Сортировка (Различная сортировка)», с разбивкой примерно на 30% между индексами. Раньше время составляло от 2 до 10 секунд, но теперь оно превышает 2 минуты.
На данный момент я не уверен, как определить причину проблемы. Я предполагаю, что это либо поврежденные данные, которые я не нахожу, либо запрос повторно оптимизировал себя до чего-то, что далеко от оптимального, либо что-то не так с RAID, который не выключает никаких индикаторов или предупреждений.
Я сделал то, что обычно требуют PAGEIOLATCH_SH и подобные проблемы, и индексы не только кажутся правильными, но и до этого работали годами. Я также сделал все, что я знаю, чтобы убедиться, что диск работает. Мой вопрос в основном, как мне диагностировать корень проблемы в этой ситуации?
РЕДАКТИРОВАТЬ: обнаружил, что сервер на самом деле не вышел из строя при отключении питания, но стойка рядом с ним. Не уверен, почему накопитель частично вышел из строя, но на данный момент это похоже на случай сбоя.