MySQL Slow Query Log: включение и анализ медленных запросов

MySQL / MariaDB · 19.04.2026
MySQL Slow Query Log: включение и анализ медленных запросов

Что такое Slow Query Log

Slow Query Log фиксирует SQL-запросы, которые выполняются дольше заданного времени. Это главный инструмент диагностики производительности базы данных: он показывает, какие запросы нагружают сервер, и помогает найти запросы, которым нужны индексы.

Включение через my.cnf

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
min_examined_row_limit = 100
# Применить без перезапуска (MySQL 5.1+)
mysql -u root -p -e "
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
SET GLOBAL long_query_time = 1;
SET GLOBAL log_queries_not_using_indexes = 1;"

Параметры Slow Query Log

ПараметрЗначениеОписание
long_query_time1–2 секЗапросы длиннее этого времени логируются
log_queries_not_using_indexesONЛогировать запросы без индексов
min_examined_row_limit100Минимум просмотренных строк для логирования

Анализ через mysqldumpslow

# Топ 10 самых медленных запросов
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log

# Топ 10 по количеству выполнений
mysqldumpslow -s c -t 10 /var/log/mysql/slow.log

# С сортировкой по avg time
mysqldumpslow -s at -t 10 /var/log/mysql/slow.log

Анализ через pt-query-digest (рекомендуется)

# Установка Percona Toolkit
sudo apt install percona-toolkit

# Анализ slow log
pt-query-digest /var/log/mysql/slow.log

# Топ запросы за последние 24 часа
pt-query-digest --since=24h /var/log/mysql/slow.log

# Вывести в файл
pt-query-digest /var/log/mysql/slow.log > /tmp/slow_report.txt

Использование EXPLAIN для оптимизации

-- Анализ конкретного запроса
EXPLAIN SELECT * FROM orders WHERE status = 'pending' AND created_at > '2024-01-01';

-- Подробный анализ (MySQL 5.6+)
EXPLAIN FORMAT=JSON SELECT ...;

-- Выполнить и показать реальный план
EXPLAIN ANALYZE SELECT ...;
Ключевые поля EXPLAIN: смотрите на type (должно быть ref/eq_ref/const, не ALL), rows (меньше = лучше) и Extra (Using filesort, Using temporary — плохие признаки).
← Назад в базу знаний Задать вопрос поддержке