DBAtlas · Атлас эксплуатации баз данных

Короткий полный slow log и его анализ с pt-query-digest

MySQLПроизводительность

Команда

-- 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

Что делает

Фиксирует все запросы за короткое окно с long_query_time=0; pt-query-digest группирует их по отпечатку (fingerprint) и строит ранжированный отчёт с суммарным / средним / p95-временем, прочитанными строками и примером запроса.

Когда использовать

Когда дайджестов performance_schema недостаточно: анализ с полным текстом запросов и реальными параметрами, сравнение до / после деплоя, офлайн-разбор на другом хосте.

Внимание

long_query_time копируется из глобального значения при старте сессии; существующие соединения пула не видят новый порог до переподключения. long_query_time=0 на нагруженном сервере пишет тысячи записей в секунду; следите за местом на диске и IO, держите окно коротким и обязательно возвращайте значение. Для анализа копируйте файл с продакшена. Пользователю, запускающему pt-query-digest, нужен доступ на чтение файла (режим 640, mysql:mysql).

Открыть в DBAtlas →

Связанные материалы