Сбор данных в хранилище запросов

Область применения:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics

Хранилище запросов SQL Server работает подобно бортовому регистратору данных в самолете, непрерывно собирая сведения о компиляции и времени выполнения, связанные с запросами и планами. Связанные с запросами данные сохраняются во внутренних таблицах и предоставляются пользователям с помощью набора представлений.

Просмотры

На схеме ниже показаны представления хранилища запросов и их логические связи. Сведения о времени компиляции показаны в виде элементов синего цвета.

Query Store process views
Описания представлений

Смотреть 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 Сводная статистика времени выполнения для выполненных планов. Все захваченные метрики выражаются в виде четырех статистических функций: среднее, минимальное, максимальное и стандартное отклонение.

Дополнительные сведения о представлениях хранилища запросов см. в разделе "Связанные представления, функции и процедуры" статьи Мониторинг производительности с использованием хранилища запросов.

Обработка запросов

Хранилище запросов взаимодействует с конвейером обработки запросов в следующих ключевых моментах:

  1. При первой компиляции запросов текст запроса и исходный план отправляются в хранилище запросов.

  2. При перекомпиляции запроса план обновляется в хранилище запросов. Если создается новый план, хранилище запросов добавляет новую запись плана для запроса, сохраняя предыдущие записи вместе со статистикой их выполнения.

  3. При выполнении запроса статистика времени выполнения отправляется в хранилище запросов. Хранилище запросов поддерживает точность сводной статистики для каждого плана, выполненного в течение активного на данный момент интервала.

  4. Во время компиляции и проверки этапов повторной компиляции SQL Server определяет, есть ли план в хранилище запросов, который должен применяться для текущего выполняемого запроса. Если существует принудительный план и план в кэше процедур отличается от принудительного плана, то выполняется перекомпиляция запроса именно так, как если бы указание PLAN HINT было применено к этому запросу. Этот процесс происходит прозрачно для пользовательского приложения.

На следующей схеме показаны точки интеграции, описанные выше:

Query Store process

Замечания

Чтобы свести к минимуму издержки ввода-вывода, новые данные записываются в память. Операции записи ставятся в очередь и записываются на диск позже. Сведения о запросах и планах (на схеме ниже это Plan Store) записываются на диск с минимальной задержкой. Статистика времени выполнения (Runtime Stats) хранится в памяти в течение времени, заданного параметром DATA_FLUSH_INTERVAL_SECONDS инструкции SET QUERY_STORE. Диалоговое окно хранилища запросов Management Studio можно использовать для ввода значения интервала очистки данных (минуты), которое внутренне преобразуется в секунды.

Query Store process plan

В случае сбоя или завершения работы системы при использовании флага trace 7745 хранилище запросов может потерять данные среды выполнения, которые были собраны, но еще не сохранены, до временного окна, определенного через DATA_FLUSH_INTERVAL_SECONDS. Значение по умолчанию — 900 секунд (15 минут) — представляет собой рекомендуемое соотношение между эффективностью отслеживания запросов и доступностью данных.

Внимание

Ограничение Максимальный размер (МБ) не применяется строго. Размер хранилища проверяется только в том случае, если хранилище запросов записывает данные на диск. Этот интервал задается параметром Интервал записи данных на диск. Если хранилище запросов нарушило ограничение максимального размера между проверками размера хранилища, оно будет переведено в режим только для чтения. Если параметр Режим очистки на основе размера включен, также активируется механизм очистки для принудительного применения ограничения максимального размера.

Заметка

Если система испытывает недостаток памяти, статистика времени выполнения может быть сохранена на диске до наступления времени, определенного параметром DATA_FLUSH_INTERVAL_SECONDS.

Во время чтения данных хранилища запросов данные из памяти и с диска прозрачно объединяются.

Если сеанс прерывается или клиентское приложение перезапускается или аварийно завершает работу, статистика запросов не будет записана.

Query Store process plan information

См. также

Мониторинг производительности с использованием хранилища запросов
Рекомендации по хранилищу запросов
Представления каталога хранилища запросов (Transact-SQL)