Открыть сервис

Query Performance Insight

Query Performance Insight — это функция мониторинга производительности запросов в облачных базах данных, доступная в платформах Microsoft Azure (Azure SQL Database, Azure SQL Managed Instance) и в некоторых других системах управления базами данных (СУБД). Она предназначена для анализа и оптимизации выполнения запросов, предоставляя администраторам и разработчикам информацию о потреблении ресурсов, частоте выполнения и времени ожидания.

История

Функция Query Performance Insight была впервые представлена корпорацией Microsoft в 2015 году в составе портфеля инструментов управления Azure SQL Database. Её появление было связано с ростом популярности облачных баз данных, где традиционные методы мониторинга (например, использование SQL Server Profiler или динамических представлений управления (DMV)) требовали дополнительной настройки и не всегда были удобны для облачной среды. Основной целью разработки стало предоставление простого и наглядного инструмента для выявления проблемных запросов без необходимости вручную анализировать большие объёмы логов.

В 2016 году функция была расширена для Azure SQL Managed Instance, а в последующие годы получила интеграцию с другими сервисами Azure, такими как Azure Monitor и Azure Advisor. В 2020-х годах Microsoft добавила поддержку автоматических рекомендаций по созданию индексов и изменению схемы запросов на основе данных, собранных Query Performance Insight.

Принцип работы

Query Performance Insight собирает и агрегирует данные о выполнении запросов из внутренних системных представлений базы данных. В основе лежит анализ статистики выполнения запросов, хранящейся в кэше планов (plan cache) и в динамических представлениях, таких как sys.dm_exec_query_stats и sys.dm_exec_requests. Данные собираются с заданным интервалом (обычно каждые 15 минут) и сохраняются в течение определённого периода (по умолчанию — 30 дней, может быть настроен до 2 лет).

Ключевые метрики, анализируемые функцией:

  • Общее потребление ресурсов (CPU, IO, логические чтения/записи).
  • Продолжительность выполнения (средняя, максимальная, общая).
  • Частота выполнения (количество выполнений за период).
  • Время ожидания (ожидания на блокировки, ввод-вывод, сетевые задержки).

На основе этих данных строится рейтинг запросов по различным критериям, что позволяет быстро идентифицировать наиболее ресурсоёмкие или медленно выполняющиеся операции.

Основные возможности

Анализ запросов по потреблению ресурсов

Query Performance Insight позволяет отсортировать запросы по одному из ключевых показателей: потребление ЦП, объём операций ввода-вывода (IO), длительность выполнения или количество логических чтений. Для каждого запроса отображаются:

  • текст запроса (полный или фрагмент);
  • идентификатор плана выполнения;
  • количество выполнений;
  • среднее и максимальное время выполнения;
  • объём данных, переданных на диск или в память.

Графическое представление трендов

Функция предоставляет временные графики, показывающие изменение нагрузки на базу данных за выбранный период. Например, можно увидеть, как меняется потребление ЦП в течение дня или недели, и связать пики с конкретными запросами или событиями (например, запуск отчётов или массовые обновления данных).

Рекомендации по оптимизации

На основе собранных данных Query Performance Insight может автоматически генерировать рекомендации:

  • Создание индексов — если запрос часто выполняет сканирование таблицы, система может предложить создать индекс для ускорения поиска.
  • Изменение схемы запроса — в некоторых случаях предлагается переписать запрос или использовать подсказки (query hints) для улучшения плана выполнения.
  • Удаление неиспользуемых индексов — если индекс не используется в запросах, система может рекомендовать его удаление для снижения накладных расходов на обслуживание.

Интеграция с Azure Advisor

Данные из Query Performance Insight могут быть переданы в Azure Advisor — сервис, предоставляющий персонализированные рекомендации по оптимизации ресурсов Azure. Это позволяет автоматизировать процесс принятия решений, например, предлагать масштабирование базы данных или изменение уровня производительности.

Применение

Диагностика проблем производительности

Основное применение Query Performance Insight — выявление причин замедления работы приложений. Если пользователи жалуются на медленную загрузку страниц или длительное выполнение отчётов, администратор может зайти в портал Azure и за несколько минут определить, какие запросы потребляют больше всего ресурсов. Например, можно обнаружить, что один запрос выполняется 10 секунд вместо 0,5 секунды из-за отсутствия индекса.

Оптимизация затрат

В облачных средах, где стоимость зависит от выделенных ресурсов (например, DTU или vCore в Azure SQL Database), неэффективные запросы могут приводить к избыточному потреблению ЦП и IO, что увеличивает затраты. Query Performance Insight помогает выявить такие запросы и снизить нагрузку, что может позволить перейти на более дешёвый тарифный план.

Планирование изменений

При разработке новых функций или изменении схемы базы данных (например, добавление новых таблиц или индексов) функция позволяет оценить влияние на производительность существующих запросов. Сравнение данных до и после изменений помогает избежать деградации производительности.

Ограничения

Query Performance Insight имеет ряд ограничений:

  • Доступность — функция доступна только для баз данных, работающих в Azure SQL Database и Azure SQL Managed Instance. Для локальных версий SQL Server (on-premises) аналогичный функционал отсутствует, хотя существуют сторонние инструменты или ручной анализ DMV.
  • Глубина анализа — функция не предоставляет детальной информации о блокировках, взаимоблокировках (deadlocks) или планах выполнения в реальном времени. Для таких задач требуется использование других инструментов, например, SQL Server Profiler или расширенных событий (Extended Events).
  • Объём данных — при очень высокой нагрузке (тысячи запросов в секунду) функция может не отображать все запросы, а только наиболее ресурсоёмкие. Это связано с ограничениями на сбор и хранение данных.
  • Настройка — для корректной работы требуется включение сбора статистики запросов (Query Store), что может незначительно увеличить нагрузку на базу данных (обычно не более 1-2% ЦП).

Сравнение с аналогами

Query Performance Insight является частью более широкого набора инструментов мониторинга в Azure. Её ближайшие аналоги:

  • Query Store — встроенная функция SQL Server, которая собирает историю планов выполнения и статистику запросов. Query Performance Insight использует данные Query Store, но предоставляет более удобный интерфейс и аналитику.
  • Azure Monitor — общий сервис мониторинга Azure, который может собирать метрики производительности, но не предоставляет специализированного анализа запросов.
  • Сторонние инструменты (например, SolarWinds Database Performance Analyzer, Redgate SQL Monitor) — предлагают более глубокий анализ, включая мониторинг в реальном времени и автоматическое исправление проблем, но требуют дополнительной установки и лицензирования.

Пример использования

В типичном сценарии администратор базы данных замечает, что среднее время выполнения запросов увеличилось с 200 мс до 2 секунд. Зайдя в Query Performance Insight, он выбирает период последних 24 часов и сортирует запросы по длительности. Функция показывает, что один запрос (например, SELECT * FROM Orders WHERE OrderDate > '2023-01-01') выполняется в среднем 5 секунд и потребляет 80% ЦП. Администратор видит, что в таблице Orders отсутствует индекс по полю OrderDate. После создания индекса время выполнения снижается до 300 мс, а нагрузка на ЦП падает на 70%.

Источники

  • Microsoft Docs. «Query Performance Insight for Azure SQL Database». Microsoft Corporation, 2023.
  • Microsoft Docs. «Monitor performance by using Query Performance Insight». Microsoft Corporation, 2024.
  • Microsoft Docs. «Best practices for monitoring with Query Performance Insight». Microsoft Corporation, 2023.
  • Azure SQL Database documentation. «Query Performance Insight overview». Microsoft Corporation, 2024.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →