メモ > サーバ > 各論: コマンド > MySQLでスロークエリログを記録
MySQLでスロークエリログを記録
※実際の調査内容は「Trouble.txt」の「サーバが重い・サーバに繋がらない」を参照
※AWSでのスロークエリ確認方法は「AWS.txt」の「RDS」を参照
Mysql slow queryの設定と解析方法 - 主夫ときどきプログラマ
http://masayuki14.hatenablog.com/entry/20120704/1341360260
mysql> SELECT * FROM mysql.slow_log; … スロークエリを確認
Empty set (0.30 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'slow_query_log'; … スロークエリのON/OFFを確認(初期設定はOFF)
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | OFF |
+----------------+-------+
1 row in set (0.25 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time'; … スロークエリの記録時間を確認(初期設定は10秒)
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'log_output'; … スロークエリの記録先を確認(初期設定はファイル)
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
1 row in set (0.00 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'slow_query_log_file'; … スロークエリの記録ファイルを確認(初期設定は /var/lib/mysql/refirio-slow.log)
+---------------------+---------------------------------+
| Variable_name | Value |
+---------------------+---------------------------------+
| slow_query_log_file | /var/lib/mysql/refirio-slow.log |
+---------------------+---------------------------------+
1 row in set (0.01 sec)
mysql> SET GLOBAL slow_query_log = ON; … スロークエリのON/OFFを変更
mysql> SET GLOBAL long_query_time = 1.0; … スロークエリの記録時間を変更
mysql> SET GLOBAL log_output = 'TABLE'; … スロークエリの記録先をデータベースに変更
mysql> SELECT * FROM mysql.slow_log; … スロークエリを確認
mysql> SELECT * FROM mysql.general_log; … 一般ログを確認
mysql> SELECT * FROM mysql.slow_log ORDER BY query_time DESC LIMIT 10; … スロークエリを時間の長い順に表示する例
なお以下のようにすると、スロークエリログをファイルに書き出せる
$ echo 'SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 100;' | mysql -u ユーザー名 -p データベース名 > ダンプファイル名
■ファイルに記録したスロークエリを解析する例
スロークエリの出力ファイルを変更する場合
mysql> set global slow_query_log_file = '/tmp/mysql-slow.log';
スロークエリを表示
$ vi /var/run/mysqld/mysqld-slow.log
スロークエリを解析(実行時間の遅い順に表示)
$ mysqldumpslow -s t /var/run/mysqld/mysqld-slow.log