Query Performance Insight: кто ест ресурсы вашей базы данных?

Мы рады поделиться с вами очередной статьей из серии статей о облачных сервисах Microsoft Azure. В этот раз Андрей Антюфеев — руководитель программ Microsoft из команды SQL Server и Azure SQL Database, продолжит свой рассказ о работе с инструментами оптимизации и мониторинга при работе с облачной БД Azure SQL Database. — Владимир Юнев

В этой заметке речь пойдёт о Query Performance Insight. Инструменте SQL Azure, который поможет вам идентифицировать наиболее ресурсоемкие запросы вашей базы данных,

Query Performance Insights анонсирован в начале октября и сегодня достиг отметки GA. Для того, чтобы понять, что это такое, давайте представим, что ваша база данных стала тормозить: как вы об этом узнаёте? Возможно, вас начали заваливать письмами клиенты, недельный отчёт стал выполняться час вместо привычных 3 минут, ваше приложение начало выкидывать исключения.

Начало пути — Новый портал Azure


Вы заходите на portal.azure.com и находите свою базу данных в списке ресурсов, разглядываете Monitoring chart:

21677e5f9e114f5e8ce37bdbe7c4150f.png


Да, что-то случилось, DTU подскочил до 90%, что же дальше?

Чтобы заглянуть глубже и найти виновника, давайте загрузим Query Performance Insight.

Query Performance Insight


5113d60bccf9479e9585baaa3380669b.png

График показывает TOP-5 запросов по потреблению CPU за последний день или любой другой отрезок времени. Главное, чтобы данные были в Query Store, но об этом позже. Каждый столбец показывает сумму 5 запросов в %CPU за час. Красным отмечена линия потребления DTU.

Внизу мы видим таблицу, где собраны данные по каждому запросу:

3d74a6d570be4c9f94039a05acf2b0e1.png


  • Среднее потребление CPU за весь отрезок времени
  • Общее время выполнения
  • Количество выполнений запроса


Вы можете изменить параметры отображения в настройках, выбрав:

  • другой временной период
  • количество запросов
  • функцию агрегации временных интервалов


41d30df49ac8490f8d4af1adc710ce08.png


Давайте откроем запрос, который в среднем использовал наибольшее количество CPU. Кликнув на строку в таблице, откроется страница с текстом запроса и всеми интервалами.

ad8faa454a80414098d853b7f46c62dd.png


Здесь, думаю, будет полезно рассказать немного о том, как работает Query Performance Insight.

Query Store


Query Performance Insight работает как визуализатор информации/телеметрии, которая уже находится в вашей базе данных, производя нехитрые агрегации и манипуляции вне вашей базы данных.

Вполне вероятно, что, когда вы впервые откроете QPI, вы ничего не увидите, кроме предложения включить Query Store для вашей базы данных. После вашего согласия необходимо немного подождать (15–30 минут) пока соберётся достаточное количество данных.

Query Store появился в SQL Server 2016 и SQL Azure. При его включении начинается сбор данных обо всех запросах. Типичными сценариями использования могут быть:

  • Идентификация и устранение проблем с Query Plan regression
  • Идентификация самых прожорливых запросов, а также самых часто выполняемых
  • A/B тестирование
  • Тонкая настройка ad-hoc запросов


Больше информации о Query Store здесь https://azure.microsoft.com/en-us/blog/query-store-a-flight-data-recorder-for-your-database/

Итог


Обычному пользователю для первого приближения должно хватить Query Performance Insight, чтобы быстро найти виновника низкой производительности и принять меры.

Более продвинутые пользователи, возможно, захотят ознакомиться с Query Store.

Пожалуйста оставляйте комментарии и пожелания для следующих версий Query Performance Insight.

Об авторе


Андрей Антюфеев

39cc8672fc0840f685b9b42b42f26d4d.jpg

Руководитель программ SQL Server & Azure SQL Database, Microsoft
sitox

© Habrahabr.ru