Відповіді:
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
вимагають великих операцій на великих таблицях.
SQL for Smarties
і Thinking in Sets
) та мій щоденник, звичайно :)
PAGEIOLATCH_SH
тип очікування зазвичай з’являється в результаті фрагментованого або неоптимізованого індексу.
Часто причинами надмірного PAGEIOLATCH_SH
очікування є:
Для того, щоб спробувати вирішити проблему високого PAGEIOLATCH_SH
очікування, ви можете перевірити:
PAGEIOLATCH_SH
типів очікуванняЗавжди майте на увазі, що у випадку високої безпеки Дзеркального відображення або наявності синхронних комітів в AlwaysOn AG PAGEIOLATCH_SH
можна очікувати збільшення / надмірності .
Детальніше про цю тему можна знайти в статті Обробка надмірних типів очікування SQL Server PAGEIOLATCH_SH