Анализ производительности запросов для Базы данных SQL Azure

Применимо к:База данных SQL Azure

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

  • Более глубокое понимание потребления ресурсов базы данных (единиц DTU).
  • Подробности о запросах к базе данных с максимальным использованием ресурсов ЦП, наибольшей длительностью и частотой выполнения (то есть с наибольшим потенциалом для повышения производительности).
  • Возможность перейти к подробным сведениям о запросе, изучить его текст и журнал использования ресурсов.
  • Заметки с рекомендациями по повышению производительности, которые предлагаются помощниками по базам данных.

Query Performance Insight

Необходимые компоненты

Для анализа производительности запросов в базе данных должно быть активно хранилище запросов . Оно по умолчанию автоматически включается для всех баз данных в Базе данных SQL Azure. Если хранилище запросов неактивно, на портале Azure появится запрос на его включение.

Примечание.

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

Разрешения

Для использования средства "Анализ производительности запросов" вам нужны следующие разрешения в системе управления доступом на основе ролей (Azure RBAC).

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

Использование анализа производительности запросов

Анализ производительности запросов легко использовать:

  1. Откройте портал Azure и найдите базу данных, которую необходимо исследовать.

  2. В меню слева выберите Интеллектуальные средства повышения производительности>Анализ производительности запросов.

    Query Performance Insight on the menu

  3. На первой вкладке просмотрите список самых ресурсоемких запросов.

  4. Выберите отдельный запрос, чтобы просмотреть сведения о нем.

  5. Выберите Интеллектуальные средства повышения производительности>Рекомендации по производительности и ознакомьтесь с возможными рекомендациями. Дополнительные сведения о встроенных рекомендациях по производительности см. в статье Помощник по базам данных SQL Azure.

  6. С помощью ползунков или значков масштабирования можно изменить наблюдаемый интервал.

    Performance dashboard

Примечание.

Сведения по анализу производительности запросов для Базы данных SQL Azure будут отображаться только в том случае, если в хранилище запросов собраны данные хотя бы за несколько часов. Если в базе данных нет активности или хранилище запросов было неактивно в течение определенного времени, диаграммы не будут содержать данные по анализу производительности запросов за этот период. Вы можете в любой момент включить хранилище запросов, если оно не запущено. Дополнительные сведения см. в статье Рекомендации по работе с хранилищем запросов.

Для рекомендаций по производительности базы данных выберите Рекомендации на панели навигации "Аналитика производительности запросов".

The Recommendations tab

Просмотр запросов, максимально использующих ресурсы процессора

По умолчанию при первом запуске службы анализа производительности запросов отображаются пять запросов, которые используют больше всех ресурсов процессора.

  1. С помощью флажков выделите отдельные запросы или отмените их выделение, чтобы включить их в диаграмму или исключить из нее.

    В верхней строке показывается общий процент использования единиц передачи данных (DTU) для базы. В столбцах отображается процент ресурсов процессора, который потреблялся выбранными запросами за указанный интервал времени. Например, если выбран интервал За последнюю неделю, каждый столбец будет представлять один день.

    Top queries

    Внимание

    В строке DTU показывается обобщенный максимальный уровень потребления за периоды длительностью один час. Это позволяет провести высокоуровневое сравнение только по статистике выполнения запросов. В некоторых случаях использование DTU может казаться слишком высоким по сравнению с выполненными запросами, но иногда это не так.

    Например, если запрос использует до 100 % DTU в течение всего нескольких минут, в строке DTU в данных анализа производительности запросов уровень потребления 100 % будет отображаться для всего часа (вследствие использования максимального обобщенного значения).

    Для более точного (поминутного) сравнения можно создать собственную диаграмму использования DTU.

    1. На портале Azure выберите База данных SQL Azure>Мониторинг.
    2. Выберите Метрики.
    3. Выберите + Добавить диаграмму.
    4. Выберите процент DTU на диаграмме.
    5. Дополнительно выберите За последние 24 часа в меню в верхнем левом углу и укажите интервал, равный одной минуте.

    С помощью настраиваемой диаграммы DTU вы можете получить более точные данные для сравнения с диаграммой выполнения запросов.

    В приведенной ниже таблице представлены обобщенные данные по видимым запросам.

    • Идентификатор запроса, который уникальным образом идентифицирует запрос в базе данных.
    • Загрузка ЦП на запрос за период наблюдения, которая зависит от статистической функции.
    • Длительность запроса, которая также зависит от статистической функции.
    • Общее число выполнений определенного запроса.
  2. Если данные устарели, нажмите кнопку Обновить.

  3. Чтобы изменить интервал наблюдения и изучить пики потребления, можно использовать ползунки и кнопки масштабирования.

    Sliders and zoom buttons for changing the interval

  4. При необходимости вы можете перейти на вкладку Пользовательские и задать следующие настройки представления:

    • метрику (ЦП, длительность, число выполнений);
    • интервал времени (за последние 24 часа, за прошлую неделю, за прошлый месяц);
    • количество запросов;
    • статистическую функцию.

    Custom tab

  5. Чтобы просмотреть настраиваемое представление, нажмите кнопку Перейти >.

    Внимание

    В зависимости от выбранной настройки в анализе производительности отображаются данные по 5–20 самым ресурсоемким запросам. Помните, что в базе данных может выполняться множество других запросов, которые не будут показаны на диаграмме.

    Вполне возможен такой сценарий нагрузки на базу данных, при котором значительную долю DTU потребляет множество часто выполняемых небольших запросов. Такие запросы не будут отображаться на диаграмме производительности.

    Например, запрос может за короткое время потребить значительное количество DTU, однако при этом его общее потребление за период наблюдения будет меньше по сравнению с другими самыми ресурсоемкими запросами. В таком случае данные по использованию ресурсов этим запросом не будут отображаться на диаграмме.

    Если вам необходимо оценить самые часто выполняемые запросы, которые не отображаются из-за ограничений анализа производительности запросов, мы рекомендуем использовать службу Azure SQL Insights для расширенного мониторинга производительности базы данных и устранения связанных с этим неполадок.

Просмотр подробных сведений для отдельного запроса

Чтобы просмотреть сведения о запросе, выполните следующие действия.

  1. Щелкните любой запрос в списке самых ресурсоемких запросов.

    List of top queries

    Откроется подробное представление. В нем будут приведены данные о потреблении ресурсов ЦП, длительности и числе выполнений за указанный период.

  2. Выберите компоненты диаграммы для просмотра подробных сведений.

    • На верхней диаграмме отображается строка, определяющая общий процент DTU для базы данных. Столбцы показывают процент ресурсов ЦП, потребляемый выбранным запросом.
    • Вторая диаграмма отображает общую длительность выполнения выбранного запроса.
    • На нижней диаграмме отображено общее число выполнений выбранного запроса.

    Query details

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

    Внимание

    При анализе производительности запросов не учитываются запросы DDL. В некоторых случаях также могут не учитываться некоторые специализированные запросы.

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

Просмотр запросов с наибольшей длительностью

В анализе производительности запросов представлены две метрики, на основе которых вы можете выявить потенциальные узкие места: длительность и число выполнений.

Длительные запросы с большой вероятностью могут блокировать ресурсы на долгий период, блокировать работу других пользователей и ограничивать масштабируемость. Они также являются лучшими кандидатами для оптимизации. Дополнительные сведения см. в статье Изучение и устранение проблем блокировок в Azure SQL.

Определение длительных запросов

  1. Откройте вкладку Пользовательские в колонке "Анализ производительности запросов" для выбранной базы данных.

  2. Выберите метрику Длительность.

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

  4. Выберите статистическую функцию.

    • Сумма. Суммирует время выполнения запроса на протяжении всего интервала наблюдения.
    • Максимум. Находит запросы, время выполнения которых было максимальным на всем интервале наблюдения.
    • Среднее. Находит среднее время выполнения для всех выполненных запросов и показывает наибольшее из этих средних значений.

    Query duration

  5. Чтобы просмотреть настраиваемое представление, нажмите кнопку Перейти >.

    Внимание

    При настройке представления запросов не происходит обновления строки DTU. В строке DTU всегда отображается максимальный уровень потребления за указанный период.

    Чтобы более детально проанализировать потребление DTU (на уровне вплоть до одной минуты), рекомендуется создать настраиваемую диаграмму на портале Azure.

    1. Выберите База данных SQL Azure>Мониторинг.
    2. Выберите Метрики.
    3. Выберите + Добавить диаграмму.
    4. Выберите процент DTU на диаграмме.
    5. Дополнительно выберите За последние 24 часа в меню в верхнем левом углу и укажите интервал, равный одной минуте.

    Мы рекомендуем использовать настраиваемую диаграмму DTU для сравнения с диаграммой производительности запросов.

Просмотр запросов с наибольшим числом выполнений

Работа пользовательского приложения, обращающегося к базе данных, может замедляться, даже если большое число выполнений не влияет на саму базу данных и используется небольшой объем ресурсов.

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

Например, многие управляемые данными веб-сайты интенсивно обращаются к базе данных при каждом запросе пользователя. Хотя объединение подключений в пулы помогает решить проблему, увеличение сетевого трафика и рабочей нагрузки на сервер базы данных может отрицательно сказаться на производительности. В общем случае следует минимизировать количество круговых путей.

Чтобы найти самые активные (часто выполняемые) запросы, сделайте следующее:

  1. Откройте вкладку Пользовательские в колонке "Анализ производительности запросов" для выбранной базы данных.

  2. Выберите метрику Число выполнений.

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

  4. Чтобы просмотреть настраиваемое представление, нажмите кнопку Перейти >.

    Query execution count

Основные сведения о заметках к настройке производительности

При изучении рабочей нагрузки в колонке "Анализ производительности запросов" в верхней части диаграммы можно заметить значки с вертикальной линией.

Эти значки представляют собой заметки. В них приводятся рекомендации по повышению производительности, предлагаемые Помощником по базам данных SQL Azure. Чтобы просмотреть краткое содержание рекомендаций по производительности, наведите указатель мыши на заметку.

Query annotation

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

Query annotation details

В некоторых случаях из-за установленного масштаба близко расположенные заметки могут перекрываться. В таких случаях они отображаются в данных анализа производительности запросов как группа заметок. При выборе значка заметки группы откроется новая область, в которую перечислены заметки.

Сопоставление запросов и действий по оптимизации производительности позволяет лучше понять характер рабочей нагрузки.

Оптимизация конфигурации хранилища запросов

При работы с анализом производительности запросов хранилище запросов может выдавать следующие сообщения.

  • "Хранилище запросов настроено неоптимальным образом для этой базы данных. Щелкните здесь, чтобы получить дополнительные сведения."
  • "Хранилище запросов настроено неоптимальным образом для этой базы данных. Щелкните здесь, чтобы изменить настройки."

Обычно эти сообщения отображаются, когда хранилище запросов не может собирать новые данные.

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

Query Store details

Второй случай происходит, когда хранилище запросов отключено или не заданы оптимальные параметры. Вы можете изменить политику хранения и записи, а также включить хранилище запросов, выполнив следующие команды T-SQL, предоставленные редактором запросов портал Azure, SQL Server Management Studio (SSMS), Azure Data Studio, sqlcmd или клиентским средством.

Политики хранения бывают двух видов.

  • На основе размера. Если эта политика имеет значение Автоматически, по достижении максимального размера хранилища данные автоматически удаляются.
  • На основе времени. Значение по умолчанию для этой политики — 30 дней. Если в хранилище запросов не хватает места, будут удалены данные запросов старше 30 дней.

Для политики сбора можно задать следующие значения.

  • Все. В хранилище запросов фиксируются все запросы.
  • Автоматически. В хранилище запросов не фиксируются редкие запросы и запросы с незначительным временем компиляции и выполнения. Пороговые значения числа выполнений, а также времени компиляции и выполнения определяются внутренним образом. Этот параметр по умолчанию.
  • Нет. В хранилище запросов прекращается запись новых запросов, но по-прежнему собирается статистика выполнения уже записанных запросов.

Мы рекомендуем установить для всех политик значения АВТОМАТИЧЕСКИ, а для политики очистки задать значение "30 дней", выполнив следующие команды из SSMS или на портале Azure. (Вместо YourDB укажите имя базы данных.)

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (SIZE_BASED_CLEANUP_MODE = AUTO);

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30));

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (QUERY_CAPTURE_MODE = AUTO);

Чтобы увеличить размер хранилища запросов, установите подключение к базе данных с помощью SSMS или портала Azure и выполните следующий запрос. (Вместо YourDB укажите имя базы данных.)

    ALTER DATABASE [YourDB]
    SET QUERY_STORE (MAX_STORAGE_SIZE_MB = 1024);

В результате применения этих параметров в хранилище запросов будут записываться данные телеметрии для новых запросов. Если вам требуется использовать хранилище запросов прямо сейчас, при необходимости можно выполнить его очистку, выполнив следующий запрос с помощью SSMS или портала Azure. (Вместо YourDB укажите имя базы данных.)

Примечание.

В результате выполнения следующего запроса будут удалены все ранее собранные в хранилище запросов данные телеметрии.

    ALTER DATABASE [YourDB] SET QUERY_STORE CLEAR;

Следующие шаги

Рассмотрите возможность использования Аналитики SQL Azure для расширенного мониторинга производительности большого парка отдельных и пуловых баз данных, эластичных пулов, управляемых экземпляров и баз данных экземпляров.