Поделиться через


Журналы медленных запросов в База данных 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 параметров on может повлиять на производительность 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 Имя пользователя
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