MySQL: включаем лог медленных запросов

Автор: | 09/23/2012
 

Для отслеживания работы сервера MySQL и настройки его производительности, одним из самых полезных инструментов является логгирование медленных запросов. Т.е. таких запросов, которые ввыполняются более, чем N секунд.

Создадим сам лога:

# touch /var/log/mysqld-slow-query.log

Изменим владельца:

# chown mysql:mysql mysqld-slow-query.log

Отредактируем файл конфигруации сервера MySQL. У меня он находится тут — /etc/my.cnf.

В блок [mysqld] добавляем строки:

long_query_time = 10
log-slow-queries = /var/log/mysqld-slow-query.log

Параметр long_query_time указывает, какие запросы считать медленными и записывать в лог. В данном случае — все, выполняющиесся более 10 секунд.

Перезапускаем сервер MySQL:

# service mysql-server restart
Stopping mysql.
Waiting for PIDS: 1368.
Starting mysql.

И проверяем лог:

# tail -f /var/log/mysqld-slow-query.log

В одной из строк есть строка:

Query_time: 11.894846  Lock_time: 0.000056 Rows_sent: 5  Rows_examined: 3358

Запрос выполнялся 11.8 секунд, и был занесен в файл лога.

Вариант такой же настройки но без перезагрузки MySQL сервера описан в статье MySQL: включаем slow_query_log без перезагрузки сервера.