DBAtlas · Atlas de operaciones de bases de datos

Capturar un slow log completo breve y analizarlo con pt-query-digest

MySQLRendimiento

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

Qué hace

Captura todas las consultas durante una ventana corta con long_query_time=0; pt-query-digest las agrupa por fingerprint y produce un informe ordenado con tiempo total / medio / p95, filas examinadas y una consulta de ejemplo.

Cuándo usarlo

Cuando los digests de performance_schema no bastan: análisis con el texto completo de la sentencia y parámetros reales, comparación antes / después de un despliegue, revisión offline en otro host.

Precaución

long_query_time se copia del valor global al iniciar una sesión; las conexiones existentes de un pool no ven el nuevo umbral hasta que se reconectan. long_query_time=0 escribe miles de entradas por segundo en un servidor con carga; vigile el espacio en disco y el IO, mantenga la ventana corta y revierta siempre. Copie el archivo fuera de producción para analizarlo. El usuario que ejecuta pt-query-digest necesita acceso de lectura al archivo (modo 640, mysql:mysql).

Abrir en DBAtlas →

Relacionado