LoginSignup
51
57

More than 5 years have passed since last update.

MySQLで全てのクエリの確認

Last updated at Posted at 2016-08-14

実行環境:CentOS6.6, MySQL 5.7.11

MySQLで、クエリログを確認したい時に、下記の方法があります。
1. 実行しているクエリ:

mysql> show full processlist\G;
*************************** 6. row ***************************
     Id: <接続識別子、これは、INFORMATION_SCHEMA.PROCESSLIST テーブルの ID カラムの値>
   User: <発行したMySQLユーザー>
   Host: <発行しているクライエントのホスト名>
     db: <データベース名>
Command: <コメンド種類:Query, Connect, Sleep>。クエリの場合、Queryになる
   Time: <現在の状態どれだけ続いている(数秒)>
  State: <コメンドの状態:Sending data>
   Info: <クエリ文>

注意: FULL キーワードを使用しない場合、Info フィールドは100 文字のみまで表示されます。
参考:https://dev.mysql.com/doc/refman/5.6/ja/show-processlist.html

2.実行したクエリ
2.1 スレッド情報から、クエリの情報を取得

mysql> select * from INFORMATION_SCHEMA.PROCESSLIST order by id desc limit 10\G;
*************************** 1. row ***************************
     ID: 
   USER: 
   HOST: 
     DB: 
COMMAND: 
   TIME: 
  STATE: 
   INFO: 

このクエリを実行したら、クエリ文(INFOコラム)と実行時間(TIME、数秒)情報が分かります。
参考:https://dev.mysql.com/doc/refman/5.6/ja/processlist-table.html

2.2 ログファイルから見えます。

~]# vim /etc/my.cnf
general_log=ON #クエリログが有効
general_log_file=/home/mysql_query_log/query.log #ログファイルのパース
~]# /etc/init.d/mysqld restart

MySQL設定ファイルの中で、general_onとgeneral_log_fileを設定して、MySQLを再起動すれば実行されているクエリがログに記録されます。
ログを確認する際、

~]# tail -f /home/mysql_query_log/query.log
2016-08-14T17:09:01.663883Z  982 Query  SELECT MAX(last_run) AS last_run FROM advertise_domain

を実行すれば、全てのクエリが見えます。実行日時、クエリ文は確認できます。
また、検索語があれば、確認も絞り込みます。

~]# tail -f /home/mysql_query_log/query.log | grep "<検索語>"
  1. 遅いクエリの確認
~]# vim /etc/my.cnf
slow_query_log=1 #0:無効、1:有効
slow_query_log_file=/home/mysql/mysqld-slow.log #ログファイルのパース
long_query_time=5 #5秒以上かかったクエリは遅いクエリになり、ディフォルトは10秒
~]# /etc/init.d/mysqld restart

このログは、実行日時、実行時間、クエリ文の確認ができます。

参考:
- https://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html#sysvar_slow_query_log
- https://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html#sysvar_slow_query_log_file
- https://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html#sysvar_long_query_time

以上です。よろしくお願いします。

51
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
57