Відповіді:
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