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

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

目次

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

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

show global variables like 'slow_query%';
show session variables like 'slow_query%';
show variables like 'slow_query%';
  • show variables は、MySQLのシステム変数の値を表示します。
  • 「slow_query%」の指定で、「slow_query」で始まる値を表示します。
    %はワイルドカード文字です。
  • 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配下に出力されました。

slow_query_log スロークエリの出力 ON(有効)/OFF(無効)
slow_query_log_file スロークエリを出力するログ名

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

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

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

 

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

show global variables like 'long_query_time';
show session variables like 'long_query_time';
show variables like 'long_query_time';
  • show variables は、MySQLのシステム変数の値を表示します。
  • 「long_query_time」の指定で、「long_query_time」の値を表示します。
  • 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秒を超えるとスロークエリとして出力する設定になっています。

long_query_time スロークエリとして出力する基準の秒数

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

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

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

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

 

スロークエリのログ

出力したスロークエリのログです。
D:\xampp\mysql\data\pc1-slow.log

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)

explain select文

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

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

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

関連の記事

MySQL コマンドの一覧

△上に戻る