MySQL スロークエリ関連のコマンドのサンプル

MySQLのスロークエリ関連のコマンドのサンプルです。

目次

サンプル スロークエリの設定を表示する
  スロークエリとする判定基準の秒数を表示する
  スロークエリのログ
  実行計画を確認する

スロークエリの設定を表示する

show global variables like 'slow_query%';
show session variables like 'slow_query%';
show variables like 'slow_query%';
  • show variables は、MySQLのシステム変数の値を表示します。
  • globalを指定するとMySQL への新しい接続に使用される値を表示します。
  • sessionを指定すると現在の接続に有効な値を表示します。
  • global/sessionを指定しない場合、sessionになります。
MariaDB [testphp]> show variables like 'slow_query%';
+---------------------+--------------+
| Variable_name       | Value        |
+---------------------+--------------+
| slow_query_log      | OFF          |
| slow_query_log_file | pc1-slow.log |
+---------------------+--------------+
3 rows in set (0.00 sec)

5行目は、スロークエリの出力がオフ(無効)になっています。
6行目は、スロークエリを出力するログ名です。D:\xampp\mysql\data配下に出力されました。

スロークエリの設定を変更する

変更する場合、setコマンドを使用します。

MariaDB [(none)]> set global slow_query_log = ON;
MariaDB [(none)]> set global slow_query_log_file = 'pc2-slow.log';

 

スロークエリとする判定基準の秒数を表示する

show global variables like 'long_query_time';
show session variables like 'long_query_time';
show variables like 'long_query_time';
  • show variables は、MySQLのシステム変数の値を表示します。
  • globalを指定するとMySQL への新しい接続に使用される値を表示します。
  • sessionを指定すると現在の接続に有効な値を表示します。
  • global/sessionを指定しない場合、sessionになります。
MariaDB [testphp]> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

5行目は、10秒を超えるとスロークエリとして出力する設定になっています。

スロークエリの設定を変更する

変更する場合、setコマンドを使用します。

MariaDB [(none)]> set global long_query_time = 0.1;

0を設定するとSQL実行毎にスロークエリのログが出力されます。

 

スロークエリのログ

上記の設定から出力したスロークエリのログです。

d:\xampp\mysql\bin\mysqld.exe, Version: 10.4.14-MariaDB (mariadb.org binary distribution). started with:
TCP Port: 3309, Named Pipe: D:/xampp/mysql/mysql.sock
Time		    Id Command	Argument
# Time: 210403 17:27:21
# User@Host: root[root] @ localhost [127.0.0.1]
# Thread_id: 17  Schema: testphp  QC_hit: No
# Query_time: 0.000060  Lock_time: 0.000000  Rows_sent: 0  Rows_examined: 0
# Rows_affected: 0  Bytes_sent: 11
use testphp;
SET timestamp=1617438441;
SET NAMES 'utf8';

5行目は、rootユーザがlocalhostで実行したと表示されています。
7行目のQuery_timeは、0.00006秒となっています。

 

実行計画を確認する

explain select文

select文の実行計画を表示する場合は、頭にexplainをつけます。

実行すると以下のように表示されます。

typeは、ALLとなっています。フルテーブルスキャンを意味します。
以下は、MySQLのEXPLAIN 出力フォーマットのリンクです。
https://dev.mysql.com/doc/refman/5.6/ja/explain-output.html

関連の記事

MySQL コマンドの一覧

△上に戻る