Logs de consulta lentos no 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âmetrolong_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 o 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 do parâmetro atualizado. - log_slow_admin_statements: Determina se as instruções administrativas (ex.
ALTER_TABLE
,ANALYZE_TABLE
) são registradas. - 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 executadas 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 lentos são integrados às configurações de diagnóstico do Azure Monitor. Depois de habilitar os logs de consulta lenta em seu Banco de Dados do Azure para a instância do Servidor Flexível 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 de 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 do Servidor Flexível 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