Настройка и анализ slow query логов в MySQL 5.7+

Категория: MySQL

Включаем для 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

категория: MySQL