Логические чтения против физических
Пересказ статьи Erik Darling. Logical vs Physical Reads
В процессе
Иногда мне задают вопрос, как много я видел запросов, которые выполняли множество логических чтений. Ответ: не очень часто.
Основная метрика, на которую я смотрю, это ЦП, как общая, так и средняя. Если вы наблюдаете её, то наиболее вероятно также обнаружите тот тип запросов, которые выполняют много чтений, поскольку где-то попутно обнаружится отсутствие подходящего индекса.
Если запрос действительно выполняется быстро, вас на самом деле не беспокоят их логические чтения, которые в любом случае все выполняются со страниц в памяти.
Полезно посмотреть на сценарии с прослушиванием параметров (parameter sniffing), поскольку один и тот же запрос может иногда выполнять много чтений, а иногда - нет. Но в то же время этот запрос будет также иногда интенсивно использовать ЦП, а иногда - нет.
И нет, я не считаю это признаком того, что мне нужно дефрагментировать индексы.
Запросы - и серверы в целом - которые имеют высокое число физических чтений - это другая история.
Конечно, глядя на них, вы можете обнаружить запросы с отсутствующим индексом, но наиболее вероятно, что вы обнаружите сервер, который немного недоедает в отделе оперативной памяти. Физические чтения происходят с диска, и если ваши запросы постоянно накапливают их, вам будет на что посмотреть.
Выяснить это может быть непросто, но можно упростить с помощью хорошего инструмента мониторинга.
Статистика ожидания - это то, что разделяет серверы, на которых запросы выполняют много логических операций чтения, и серверы, выполняющие много физических операций чтения.
Серверы, на которых запросы выполняют большое количество операций чтения страниц с диска в память - физические чтения - будут иметь большее время ожидания для PAGEIOLATCH_SH и PAGEIOLATCH_EX.
Полезно посмотреть на сценарии с прослушиванием параметров (parameter sniffing), поскольку один и тот же запрос может иногда выполнять много чтений, а иногда - нет. Но в то же время этот запрос будет также иногда интенсивно использовать ЦП, а иногда - нет.
И нет, я не считаю это признаком того, что мне нужно дефрагментировать индексы.
Физические
Запросы - и серверы в целом - которые имеют высокое число физических чтений - это другая история.
Конечно, глядя на них, вы можете обнаружить запросы с отсутствующим индексом, но наиболее вероятно, что вы обнаружите сервер, который немного недоедает в отделе оперативной памяти. Физические чтения происходят с диска, и если ваши запросы постоянно накапливают их, вам будет на что посмотреть.
- Достаточно ли памяти, чтобы кэшировать ваши объекты, к которым наиболее часто происходит доступ?
- Есть ли у вас запросы с огромным выделением памяти, которые очищают участки буферного пула?
- Есть ли у вас слишком много ненужных индексов, конкурирующих за пространство в буферном пуле и выталкивающих один другого?
Выяснить это может быть непросто, но можно упростить с помощью хорошего инструмента мониторинга.
Грамотность
Статистика ожидания - это то, что разделяет серверы, на которых запросы выполняют много логических операций чтения, и серверы, выполняющие много физических операций чтения.
Серверы, на которых запросы выполняют большое количество операций чтения страниц с диска в память - физические чтения - будут иметь большее время ожидания для PAGEIOLATCH_SH и PAGEIOLATCH_EX.
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой