Поиск медленных запросов MySQL

В MySQL есть замечательная встроенная фишка, которая поможет отловить самые медленные запросы к базе данных. Все очень легко настраивается.

Настройка логирования

Открываем конфигурацию для MySQL 5.5:

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Внимание. В других версиях mysql файл с настройками возможно находится в другом месте. Например в /etc/my.cnf

В блоке [mysqld] дописываем следующие строки:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 30

Где:
slow_query_log — включаем отслеживание медленных запросов
slow_query_log_file — путь к лог файлу, куда будем записывать запросы
long_query_time — макс. время выполнения запроса в секундах, более — записываем в лог

Создаем лог файл

$ touch /var/log/mysql/slow-query.log

Даем права на запись:

$ chown mysql:mysql /var/log/mysql/slow-query.log

Перезагружаем mysql

$ sudo /etc/init.d/mysql restart

Просмотр лога запросов

Просмотр 10 последних запросов

$ tail /var/log/mysql/slow-query.log

В онлайн режиме смотрим самые долгие запросы

$ tail -f /var/log/mysql/slow-query.log

Просмотр 10 самых медленных

$ mysqldumpslow -t 10 /var/log/mysql/slow-query.log