DBAtlas · Atlas de operações de banco de dados

Capturar um slow log completo curto e analisá-lo com pt-query-digest

MySQLDesempenho

Comando

-- Temporary full capture (e.g. 10 minutes); only new connections are affected
SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log';
SET GLOBAL log_slow_extra = ON;
SET GLOBAL long_query_time = 0;
SET GLOBAL slow_query_log = ON;
-- ... then return to the normal threshold
SET GLOBAL long_query_time = 1;

# Shell: top 10 queries by total time
pt-query-digest --limit=10 --order-by=Query_time:sum --noversion-check /var/lib/mysql/slow.log > /tmp/digest.txt
pt-query-digest --since='2026-10-08 09:00:00' --until='2026-10-08 10:00:00' --filter '$event->{db} && $event->{db} eq "shop"' --report-format=profile --noversion-check /var/lib/mysql/slow.log

O que faz

Captura todas as consultas por uma janela curta com long_query_time=0; o pt-query-digest as agrupa por fingerprint e gera um relatório classificado com tempo total / médio / p95, linhas examinadas e uma consulta de exemplo.

Quando usar

Quando os digests do performance_schema não bastam: análise com o texto completo do statement e parâmetros reais, comparação antes / depois de um deploy, revisão offline em outro host.

Atenção

long_query_time é copiado do valor global quando a sessão inicia; conexões existentes em um pool não veem o novo limite até reconectarem. long_query_time=0 grava milhares de entradas por segundo em um servidor movimentado; acompanhe espaço em disco e IO, mantenha a janela curta e sempre reverta. Copie o arquivo para fora da produção para análise. O usuário que executa o pt-query-digest precisa de acesso de leitura ao arquivo (modo 640, mysql:mysql).

Abrir no DBAtlas →

Relacionados