Мы рады поделиться с вами очередной статьей из серии статей о облачных сервисах 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:
![](https://habrastorage.org/files/216/77e/5f9/21677e5f9e114f5e8ce37bdbe7c4150f.png)
Да, что-то случилось, DTU подскочил до 90%, что же дальше?
Чтобы заглянуть глубже и найти виновника, давайте загрузим Query Performance Insight.
Query Performance Insight
![](https://habrastorage.org/files/511/3d6/0bc/5113d60bccf9479e9585baaa3380669b.png)
График показывает TOP-5 запросов по потреблению CPU за последний день или любой другой отрезок времени. Главное, чтобы данные были в Query Store, но об этом позже. Каждый столбец показывает сумму 5 запросов в %CPU за час. Красным отмечена линия потребления DTU.
Внизу мы видим таблицу, где собраны данные по каждому запросу:
![](https://habrastorage.org/files/3d7/4a6/d57/3d74a6d570be4c9f94039a05acf2b0e1.png)
- Среднее потребление CPU за весь отрезок времени
- Общее время выполнения
- Количество выполнений запроса
Вы можете изменить параметры отображения в настройках, выбрав:
- другой временной период
- количество запросов
- функцию агрегации временных интервалов
![](https://habrastorage.org/files/41d/30d/f49/41d30df49ac8490f8d4af1adc710ce08.png)
Давайте откроем запрос, который в среднем использовал наибольшее количество CPU. Кликнув на строку в таблице, откроется страница с текстом запроса и всеми интервалами.
![](https://habrastorage.org/files/ad8/faa/454/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.
Об авторе
Андрей Антюфеев
![](https://habrastorage.org/files/39c/c86/72f/39cc8672fc0840f685b9b42b42f26d4d.jpg)
Руководитель программ SQL Server & Azure SQL Database, Microsoft
sitox