Logs de consulta lentos no Banco de Dados do Azure para MySQL - Servidor Flexível

APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Flexível

No Banco de Dados do Azure para servidor flexível MySQL, o log de consulta lenta está disponível para os usuários configurarem e acessarem. Os logs de consulta lenta são desabilitados por padrão e podem ser habilitados para ajudar a identificar gargalos de desempenho durante a solução de problemas.

Para obter mais informações sobre o log de consulta lenta do MySQL, consulte a seção de log de consulta lenta na documentação do mecanismo MySQL.

Configurar o log de consultas lentas

Por padrão, o log de consulta lenta está desabilitado. Para habilitar logs, defina o slow_query_log parâmetro server como ON. Isso pode ser configurado usando o portal do Azure ou a CLI do Azure.

Outros parâmetros que você pode ajustar para controlar o comportamento lento do log de consultas incluem:

  • long_query_time: registre uma consulta se ela demorar mais do que long_query_time (em segundos) para ser concluída. A predefinição é 10 segundos. O parâmetro long_query_time Server aplica-se globalmente a todas as conexões recém-estabelecidas no MySQL. No entanto, isso não afeta threads que já estão conectados. É recomendável se reconectar ao Banco de Dados do Azure para servidor flexível MySQL a partir do aplicativo, ou reiniciar o servidor ajudará a limpar threads com valores mais antigos de "long_query_time" e aplicar o valor de parâmetro atualizado.
  • log_slow_admin_statements: Determina se as instruções administrativas (ex. , ANALYZE_TABLE) são registradas. ALTER_TABLE
  • log_queries_not_using_indexes: Determina se as consultas que não usam índices são registradas.
  • log_throttle_queries_not_using_indexes: limita o número de consultas não indexadas que podem ser gravadas no log de consultas lentas. Este parâmetro entra em vigor quando log_queries_not_using_indexes é definido como ON

Importante

Se suas tabelas não estiverem indexadas, definir os parâmetros e log_throttle_queries_not_using_indexes como ON pode afetar o desempenho do log_queries_not_using_indexes MySQL, uma vez que todas as consultas em execução nessas tabelas não indexadas serão gravadas no log de consultas lentas.

Consulte a documentação do log de consulta lenta do MySQL para obter descrições completas dos parâmetros do log de consulta lenta.

Aceder a registos de consultas lentas

Os logs de consulta lenta são integrados às configurações de diagnóstico do Azure Monitor. Depois de habilitar os logs de consulta lenta em sua instância de servidor flexível do Banco de Dados do Azure para MySQL, você pode emiti-los para logs do Azure Monitor, Hubs de Eventos ou Armazenamento do Azure. Para saber mais sobre as configurações de diagnóstico, consulte a documentação dos logs de diagnóstico. Para saber mais sobre como habilitar as configurações de diagnóstico no portal do Azure, consulte o artigo do portal de log de consulta lenta.

Nota

As contas de Armazenamento Premium não são suportadas se estiver a enviar os registos para o armazenamento do Azure através de diagnósticos e definições.

A tabela a seguir descreve a saída do log de consulta lenta. Dependendo do método de saída, os campos incluídos e a ordem em que aparecem podem variar.

Propriedade Descrição
TenantId O seu ID de inquilino
SourceSystem Azure
TimeGenerated [UTC] Carimbo de data/hora quando o log foi gravado em UTC
Type Tipo de log. Sempre AzureDiagnostics
SubscriptionId GUID para a assinatura à qual o servidor pertence
ResourceGroup Nome do grupo de recursos ao qual o servidor pertence
ResourceProvider Nome do provedor de recursos. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI do recurso
Resource Nome do servidor
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Nome do servidor
start_time_t [UTC] Hora de início da consulta
query_time_s Tempo total em segundos que a consulta levou para ser executada
lock_time_s Tempo total em segundos em que a consulta foi bloqueada
user_host_s Username
rows_sent_s Número de linhas enviadas
rows_examined_s Número de linhas examinadas
last_insert_id_s last_insert_id
insert_id_s Inserir ID
sql_text_s Consulta completa
server_id_s ID do servidor
thread_id_s Thread ID
\_ResourceId URI do recurso

Nota

Para sql_text_s, o log será truncado se exceder 2048 caracteres.

Analisar logs nos Logs do Azure Monitor

Depois que seus logs de consulta lenta são canalizados para os Logs do Azure Monitor por meio dos Logs de Diagnóstico, você pode executar uma análise adicional de suas consultas lentas. Abaixo estão alguns exemplos de consultas para ajudá-lo a começar. Certifique-se de atualizar o abaixo com o nome do servidor.

  • Consultas com mais de 10 segundos em um determinado servidor

    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
    
  • Listar as 5 consultas mais longas em um determinado servidor

    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
    
  • Resumir consultas lentas por tempo de consulta mínimo, máximo, médio e desvio padrão em um servidor específico

    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 
    
  • Representar graficamente a distribuição lenta de consultas em um servidor específico

    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
    
  • Exibir consultas com mais de 10 segundos em todas as instâncias de servidor flexíveis do Banco de Dados do Azure para MySQL com Logs de Diagnóstico habilitados

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

Próximos passos