В дополнение к статье MySQL: включаем лог медленных запросов – другой вариант, который не требует перезагрузки сервера.
Подключаемся к MySQL и устанавливаем less
для удобного просмотра страниц:
mysql> pager less; PAGER set to 'less'
Выводим информацию о текущих установках глобальных переменных:
mysql> show variables where variable_name like "slow_query_log%"; +---------------------+-------------------------------+ | Variable_name | Value | +---------------------+-------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /var/log/mysql/mysql_slow.log | +---------------------+-------------------------------+ 2 rows in set (0.00 sec)
Включаем ведение лога:
mysql> set global log_slow_queries='ON'; Query OK, 0 rows affected, 1 warning (0.02 sec)
Устанавливаем время, после которого запрос будет считаться “slow“:
mysql> set global long_query_time = 2; Query OK, 0 rows affected (0.01 sec)
И для текущей сессии:
mysql> set @@SESSION.long_query_time = 2; Query OK, 0 rows affected (0.01 sec)
Ещё раз проверим настройки:
mysql> show variables where variable_name like "slow_query_log%"; +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | slow_query_log | ON | | slow_query_log_file | /var/log/mysql/mysql_slow.log | +---------------------+---------------------------------+
mysql> show variables where variable_name="long_query_time"; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 2.000000 | +-----------------+----------+ 1 row in set (0.02 sec)
Выполним:
mysql> do sleep (10); Query OK, 0 rows affected (10.04 sec)
И посмотрим на сам лог:
# tail -f /var/log/mysql/mysql_slow.log /usr/sbin/mysqld, Version: 5.5.30-1~dotdeb.0 ((Debian)). started with: Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock Time Id Command Argument # Time: 130405 16:30:41 # User@Host: debian-sys-maint[debian-sys-maint] @ localhost [] # Query_time: 10.036070 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 use db1_test; SET timestamp=1365168641; do sleep (10);