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
関連の記事