PAGEIOLATCH_SH, связанный с частичным отказом привода? - PullRequest
4 голосов
/ 31 мая 2011

соответствующие технологии: 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 и подобные проблемы, и индексы не только кажутся правильными, но и до этого работали годами. Я также сделал все, что я знаю, чтобы убедиться, что диск работает. Мой вопрос в основном, как мне диагностировать корень проблемы в этой ситуации?

РЕДАКТИРОВАТЬ: обнаружил, что сервер на самом деле не вышел из строя при отключении питания, но стойка рядом с ним. Не уверен, почему накопитель частично вышел из строя, но на данный момент это похоже на случай сбоя.

1 Ответ

3 голосов
/ 31 мая 2011

Вы видите много маленьких PAGEIOLATCH_SH ожиданий или несколько больших?

select * from sys.dm_os_wait_stats
where wait_type = 'PAGEIOLATCH_SH';

Каковы точные результаты (количество, время ожидания суммы, максимальное время ожидания).

Многие небольшие ожидания указывают на изменение плана запроса.Сравнение (если возможно) числа логических чтений запроса с базовым числом подтвердило бы это (увеличение числа логических чтений).Кроме того, сравнение планов, если это возможно, поможет изолировать проблему.

Немногие большие ожидания действительно указывают на проблему с приводом (долгое ожидание ввода-вывода).Ошибка 833, зарегистрированная в ОШИБКЕ, подтвердила бы это (SQL Server has encountered ... occurrence(s) of I/O requests taking longer than ... seconds to complete).

...