Что такое тип ожидания PAGEIOLATCH_SH в SQL Server? - PullRequest
91 голосов
/ 07 марта 2009

У меня есть запрос, который занимает много времени в середине транзакции. Когда я получаю wait_type процесса, это PAGEIOLATCH_SH.

Что означает этот тип ожидания и как его можно решить?

Ответы [ 2 ]

111 голосов
/ 07 марта 2009

С MSDN :

PAGEIOLATCH_SH

Происходит, когда задача ожидает защелки для буфера, который находится в запросе I/O. Запрос защелки находится в режиме совместного использования. Длительное ожидание может указывать на проблемы с дисковой подсистемой.

На практике это почти всегда происходит из-за большого сканирования больших таблиц. Это почти никогда не происходит в запросах, которые эффективно используют индексы.

Если ваш запрос такой:

Select * from <table> where <col1> = <value> order by <PrimaryKey>

, проверьте, что у вас есть составной индекс на (col1, col_primary_key).

Если у вас его нет, вам понадобится либо полный INDEX SCAN, если выбран PRIMARY KEY, либо SORT, если выбран индекс col1.

Они оба очень жесткие I/O, потребляя операции с большими таблицами.

6 голосов
/ 10 ноября 2017

PAGEIOLATCH_SH тип ожидания обычно появляется в результате фрагментированного или неоптимизированного индекса.

Часто причины чрезмерного PAGEIOLATCH_SH типа ожидания:

  • Подсистема ввода / вывода имеет проблему или неправильно настроена
  • Перегрузка подсистемы ввода-вывода другими процессами, которые вызывают высокую активность ввода-вывода
  • Плохое управление индексами
  • Неверное представление о логическом или физическом диске
  • Проблемы с сетью / задержка
  • Давление памяти
  • Синхронное зеркалирование и AlwaysOn AG

Чтобы попытаться решить проблему с высоким PAGEIOLATCH_SH типом ожидания, вы можете проверить:

  • SQL Server, запросы и индексы, так как очень часто это можно найти как основную причину чрезмерных PAGEIOLATCH_SH типов ожидания
  • Из-за нехватки памяти перед переходом к поиску и устранению неисправностей в любой подсистеме ввода-вывода

Всегда имейте в виду, что в случае высокой надежности зеркалирования или доступности синхронной фиксации в AlwaysOn AG можно ожидать увеличения / превышения PAGEIOLATCH_SH.

Подробнее об этой теме вы можете прочитать в статье Обработка чрезмерных типов ожидания SQL Server PAGEIOLATCH_SH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...