Logs de consultas lentas 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 Servidor Flexível do Banco de Dados do Azure para MySQL, o log de consultas lentas está disponível para os usuários configurarem e acessarem. Os logs de consultas lentas estão desabilitados por padrão e podem ser habilitados para auxiliar na identificação de gargalos de desempenho durante a solução de problemas.
Para obter mais informações sobre o log de consultas lentas do MySQL, consulte a seção de log de consulta lenta na documentação do mecanismo MySQL.
Configurar o registro em log de consultas lentas
Por padrão, o log de consultas lentas está desabilitado. Para habilitar os logs, defina o parâmetro de servidor slow_query_log
como ON. Isso pode ser configurado por meio do portal do Azure ou da CLI do Azure.
Outros parâmetros que você pode ajustar para controlar o comportamento do log de consultas lentas incluem:
- long_query_time: registra uma consulta se demorar mais do que
long_query_time
(em segundos) para ser concluída. O padrão é 10 segundos. O parâmetro do servidorlong_query_time
se aplica globalmente a todas as conexões recém-estabelecidas no MySQL. No entanto, isso não afeta os threads que já estão conectados. É recomendável reconectar-se ao Azure Database for MySQL Flexible Server 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 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. Esse parâmetro entra em vigor quando
log_queries_not_using_indexes
é definido como ON
Importante
Se as tabelas não estiverem indexadas, a definição de parâmetros log_queries_not_using_indexes
e log_throttle_queries_not_using_indexes
como ON poderá afetar o desempenho do MySQL, pois todas as consultas em execução nessas tabelas não indexadas serão gravadas no log de consultas lentas.
Consulte a documentação de log de consulta lenta MySQL para descrições completas dos parâmetros de log de consultas lentas.
Acessar logs de consultas lentas
Os logs de consultas lentas são integrados às configurações de diagnóstico do Azure Monitor. Depois de habilitar logs de consulta lenta na sua instância do 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, confira a documentação de logs de diagnóstico. Para saber mais sobre como habilitar as configurações de diagnóstico no portal do Azure, confira o artigo sobre o portal de log de consultas lentas.
Observação
As contas de Armazenamento Premium não têm suporte se você envia os logs para o Armazenamento do Azure por meio de diagnóstico e configurações.
A tabela a seguir descreve a saída do log de consultas lentas. Dependendo do método de saída, os campos incluídos e a ordem em que aparecem podem variar.
Propriedade | Descrição |
---|---|
TenantId |
Sua ID de locatário |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Carimbo de data/hora quando o log foi gravado, em UTC |
Type |
Tipo do log. Sempre AzureDiagnostics |
SubscriptionId |
GUID para a assinatura a que 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 de recurso |
Resource |
Nome do servidor |
Category |
MySqlSlowLogs |
OperationName |
LogEvent |
Logical_server_name_s |
Nome do servidor |
start_time_t [UTC] |
Horário em que a consulta começou |
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 ficou bloqueada |
user_host_s |
Nome de Usuário |
rows_sent_s |
Número de linhas enviadas |
rows_examined_s |
Número de linhas verificadas |
last_insert_id_s |
last_insert_id |
insert_id_s |
Inserir ID |
sql_text_s |
Consulta completa |
server_id_s |
O ID do servidor |
thread_id_s |
ID do thread |
\_ResourceId |
URI de recurso |
Observação
Para sql_text_s
, o log será truncado se exceder 2048 caracteres.
Exibir logs nos Logs do Azure Monitor
Depois que os logs de consultas lentas são canalizados para os Logs do Azure Monitor por meio dos Logs de Diagnóstico, você pode executar uma análise adicional das consultas lentas. Abaixo estão algumas consultas de exemplo para ajudar você a começar. Atualize as informações abaixo com o nome do servidor.
Consultas com mais de 10 segundos 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 | where query_time_d > 10
Listar as 5 principais consultas mais longas 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 | order by query_time_d desc | take 5
Resumir consultas lentas pelo tempo de consulta mínimo, máximo, médio e de 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
Grafar a distribuição de consultas lentas 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 Azure Database for MySQL Flexible Server 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óximas etapas
- Saiba mais sobre logs de auditoria
- Análise de desempenho de consultas