Настройка и анализ slow query логов в MySQL 5.7+
Включаем для MySQL логирование slow_query. Примеры анализа логов mysql-slow.log.
Примечание
Смотрим текущие опции конфигурации MySQL сервера:
mysqld --verbose --help
mysqld --verbose --help | grep -E "slow|long|using-indexes"
Включаем логирование slow query
Редактируем базовый конфиг mysqld.cnf или создаем отдельный конфиг для slow_query параметров (mysqld-custom-slow.cnf):
sudo nano /etc/mysql/mysql.conf.d/mysqld-custom-slow.cnf ## Отдельный конфиг
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ## Базовый конфиг
Включаем логирование медленных запросов или запросов, которые не используют индексы:
[mysqld]
## Slow Query Log
slow_query_log = true ## true, on, 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log-queries-not-using-indexes = true
Перезагружаем сервер и проверяем, что нет ошибок:
sudo service mysql restart
sudo journalctl -xe
Анализ mysql slow query логов
Смотрим slow queries:
sudo mysqldumpslow /var/log/mysql/slow.log
Топ 5 запросов, которые вернули максимальное количество строк:
sudo mysqldumpslow -a -s r -t 5 /var/log/mysql/slow.log
* Может найти запросы, где вы пропустили предложение LIMIT. Частый случай снижения производительности.
Смотрим slow_query запросы отсортированные по частоте появления в журнале slow.log (сколько раз запрос выполнялся медленно запрос):
sudo mysqldumpslow -a -s c -t 5 /var/log/mysql/slow.log
Другие утилиты для анализа pt-query-digest, mysqlsla.
#mysql, #slow query, #mysqld.cnf