Журналы медленных запросов в База данных Azure для MySQL — гибкий сервер

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер

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

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

Настройка ведения журнала медленных запросов

Журнал медленных запросов по умолчанию отключен. Чтобы включить эти журналы, установите для параметра сервера slow_query_log значение ВКЛ. Это можно настроить с помощью портал Azure или Azure CLI.

Другие параметры, которые можно настроить для управления ведением журналов медленных запросов:

  • long_query_time: регистрирует запрос, если время его выполнения превышает long_query_time (в секундах). Значение по умолчанию — 10 секунд. Параметр long_query_time сервера применяется глобально ко всем новым установленным подключениям в MySQL. Однако это не влияет на потоки, которые уже подключены. Рекомендуется повторно подключиться к База данных Azure для MySQL гибкому серверу из приложения или перезапустить сервер, чтобы очистить потоки со старыми значениями "long_query_time" и применить обновленное значение параметра.
  • log_slow_admin_statements: определяет, регистрируются ли в журнале инструкции администрирования (например, ALTER_TABLE, ANALYZE_TABLE).
  • log_queries_not_using_indexes: определяет, регистрируются ли запросы, не использующие индексы.
  • log_throttle_queries_not_using_indexes: ограничивает число запросов, не использующих индексы, регистрируемых в журнале медленных запросов. Этот параметр вступает в силу, если для log_queries_not_using_indexes установлено значение ВКЛ.

Внимание

Если таблицы не индексированы, установка для параметров log_queries_not_using_indexes и log_throttle_queries_not_using_indexes значения ВКЛ. может повлиять на производительность MySQL, так как все запросы к этим неиндексированным таблицам будут регистрироваться в журнале медленных запросов.

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

Доступ к журналам медленных запросов

Журналы медленных запросов можно интегрировать с настройками диагностики Azure Monitor. После включения журналов медленных запросов на База данных Azure для MySQL гибком экземпляре сервера можно отправлять их в журналы Azure Monitor, центры событий или служба хранилища Azure. Дополнительные сведения о настройках диагностики см. в документации к журналам диагностики. Дополнительные сведения о включении настроек диагностики на портале Azure см. в статье о журналах медленных запросов на портале.

Примечание.

Учетные записи хранилища класса Premium не поддерживаются при отправке журналов в службу хранилища Azure с помощью диагностики и параметров.

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

Свойство Description
TenantId Идентификатор клиента
SourceSystem Azure
TimeGenerated [UTC] Метка времени, когда журнал был записан в формате UTC
Type Тип журнала Всегда AzureDiagnostics
SubscriptionId Идентификатор GUID для подписки, принадлежащей серверу
ResourceGroup Имя группы ресурсов, принадлежащей серверу
ResourceProvider Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Универсальный код ресурса (URI)
Resource Имя сервера
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Имя сервера
start_time_t [UTC] Время начала запроса.
query_time_s Общее время, в секундах, которое потребовалось для выполнения запроса
lock_time_s Общее время, в секундах, блокировки запроса
user_host_s Username
rows_sent_s Количество отправленных строк.
rows_examined_s Число проверенных строк.
last_insert_id_s last_insert_id
insert_id_s Идентификатор для вставки
sql_text_s Полный запрос.
server_id_s Идентификатор сервера
thread_id_s Идентификатор потока
\_ResourceId Универсальный код ресурса (URI)

Примечание.

Для sql_text_s журнал будет обрезан, если его длина превышает 2048 символов.

Анализ журналов в журналах Azure Monitor

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

  • Запросы, выполнявшиеся дольше 10 секунд на конкретном сервере

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    
  • Список 5 запросов, дольше всего выполнявшихся на конкретном сервере

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | order by query_time_d desc
    | take 5
    
  • Сводка медленных запросов по минимальному, максимальному, среднему и стандартному отклонению времени выполнения запроса на конкретном сервере

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by Resource 
    
  • График распределения медленных запросов на конкретном сервере

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count() by Resource , bin(TimeGenerated, 5m)
    | render timechart
    
  • Отображение запросов дольше 10 секунд во всех База данных Azure для MySQL гибких экземплярах сервера с включенными журналами диагностики

    AzureDiagnostics
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    

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