Сбор данных в хранилище запросов
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics
Хранилище запросов SQL Server работает подобно бортовому регистратору данных в самолете, непрерывно собирая сведения о компиляции и времени выполнения, связанные с запросами и планами. Связанные с запросами данные сохраняются во внутренних таблицах и предоставляются пользователям с помощью набора представлений.
Представления
На схеме ниже показаны представления хранилища запросов и их логические связи. Сведения о времени компиляции показаны в виде элементов синего цвета.
Описания представлений
Представления | Description |
---|---|
sys.query_store_query_text | Показывает тексты уникальных запросов к базе данных. Комментарии и пробелы до и после текста запроса игнорируются. Комментарии и пробелы внутри текста учитываются. Каждая инструкция в пакете создает текстовую запись отдельного запроса. |
sys.query_context_settings | Показывает уникальные комбинации влияющих на план параметров, при которых выполняются запросы. Тот же текст запроса, выполненного с другими влияющими на план параметрами, создает запись отдельного запроса в хранилище запросов, так как элемент context_settings_id является частью ключа запроса. |
sys.query_store_query | Записи запросов, которые отслеживаются и принудительно выполняются отдельно в хранилище запросов. Один текст запроса может создавать несколько записей запроса, если он выполняется в различных параметрах контекста или выполняется вне и в разных модулях Transact-SQL, таких как хранимые процедуры и триггеры. |
sys.query_store_plan | Показывает предполагаемый план запроса со статистикой времени компиляции. Хранимый план эквивалентен плану, получаемому при использовании SET SHOWPLAN_XML ON . |
sys.query_store_runtime_stats_interval | Хранилище запросов делит время на автоматически создаваемые интервалы времени и сохраняет сводные статистические данные в таких интервалах для каждого выполненного плана. Размер интервала управляется интервалом сбора статистики конфигурации (в Management Studio) или INTERVAL_LENGTH_MINUTES с помощью параметров ALTER DATABASE SET (Transact-SQL). |
sys.query_store_runtime_stats | Сводная статистика времени выполнения для выполненных планов. Все захваченные метрики выражаются в виде четырех статистических функций: среднее, минимальное, максимальное и стандартное отклонение. |
Дополнительные сведения о представлениях хранилища запросов см. в разделе "Связанные представления, функции и процедуры" статьи Мониторинг производительности с использованием хранилища запросов.
Обработка запросов
Хранилище запросов взаимодействует с конвейером обработки запросов в следующих ключевых моментах:
При первой компиляции запросов текст запроса и исходный план отправляются в хранилище запросов.
При перекомпиляции запроса план обновляется в хранилище запросов. Если создается новый план, хранилище запросов добавляет новую запись плана для запроса, сохраняя предыдущие записи вместе со статистикой их выполнения.
При выполнении запроса статистика времени выполнения отправляется в хранилище запросов. Хранилище запросов поддерживает точность сводной статистики для каждого плана, выполненного в течение активного на данный момент интервала.
Во время компиляции и проверки этапов повторной компиляции SQL Server определяет, есть ли план в хранилище запросов, который должен применяться для текущего выполняемого запроса. Если существует принудительный план и план в кэше процедур отличается от принудительного плана, то выполняется перекомпиляция запроса именно так, как если бы указание PLAN HINT было применено к этому запросу. Этот процесс происходит прозрачно для пользовательского приложения.
На следующей схеме показаны точки интеграции, описанные выше:
Замечания
Чтобы свести к минимуму издержки ввода-вывода, новые данные записываются в память. Операции записи ставятся в очередь и записываются на диск позже. Сведения о запросах и планах (на схеме ниже это Plan Store) записываются на диск с минимальной задержкой. Статистика времени выполнения (Runtime Stats) хранится в памяти в течение времени, заданного параметром DATA_FLUSH_INTERVAL_SECONDS
инструкции SET QUERY_STORE
. Диалоговое окно хранилище запросов Management Studio можно использовать для ввода значения интервала очистки данных (минут), которое внутренне преобразуется в секунды.
В случае сбоя или завершения работы системы при использовании флага trace 7745 хранилище запросов может потерять данные среды выполнения, которые были собраны, но еще не сохранены, до временного окна, определенного через DATA_FLUSH_INTERVAL_SECONDS
. Значение по умолчанию — 900 секунд (15 минут) — представляет собой рекомендуемое соотношение между эффективностью отслеживания запросов и доступностью данных.
Внимание
Ограничение Максимальный размер (МБ) не применяется строго. Размер хранилища проверяется только в том случае, если хранилище запросов записывает данные на диск. Этот интервал задается параметром Интервал записи данных на диск. Если хранилище запросов нарушило ограничение максимального размера между проверками размера хранилища, оно будет переведено в режим только для чтения. Если параметр Режим очистки на основе размера включен, также активируется механизм очистки для принудительного применения ограничения максимального размера.
Примечание.
Если система испытывает недостаток памяти, статистика времени выполнения может быть сохранена на диске до наступления времени, определенного параметром DATA_FLUSH_INTERVAL_SECONDS
.
Во время чтения данных хранилища запросов данные из памяти и с диска прозрачно объединяются.
Если сеанс прерывается или клиентское приложение перезапускается или аварийно завершает работу, статистика запросов не будет записана.
См. также
Мониторинг производительности с использованием хранилища запросов
Рекомендации по хранилищу запросов
Представления каталога хранилища запросов (Transact-SQL)