Для отслеживания работы сервера 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 без перезагрузки сервера.