[MySQL]クエリにかかった時間の計測方法メモ

記事内に広告が含まれています。

MySQLのクエリの性能評価の一環として、クエリにかかった時間を確認することがあったのでメモ。

前提

MySQLは8.1系を利用しています。

selectにかかった時間の確認

explain analyze コマンドを実行することで、実際にクエリを投げてみた結果が確認できます。

explain analyze
select * from ... //自分が確認したいクエリ

actual time の欄で実際にクエリにかかった時間を確認できます。単位はミリ秒です。コマンド実行結果に、actual time という項目があり、2つ目の値が実際にクエリにかかった時間となります。

//(actual time=0.017..0.019 rows=15 loops=1)
1つ目の時間(0.017)は最初の行を返すまでの時間、
2つ目の時間(0.19)が全部の行を返すまでの時間

performance_schemaを用いた時間の確認

performance_schema という別の方法を使っても計測することが可能です。

以下の設定値がONになっていれば確認できます。

SHOW VARIABLES LIKE 'performance_schema';

以下のコマンドを実行します。

SELECT EVENT_ID, SQL_TEXT, TIMER_START, TIMER_END,
       ROUND((TIMER_END - TIMER_START) / 1000000, 3) AS exec_time_ns
FROM performance_schema.events_statements_history
WHERE SQL_TEXT LIKE '検索したいクエリ' // 自分が確認したいクエリを入力
ORDER BY EVENT_ID DESC

TIME_START, TIME_END の単位には注意が必要です。適宜ns, msなどに単位変換すると見やすくなると思います。

TIME_START, TIME_END は単位がこれらの値の単位はピコ秒 (秒の 1 兆分の 1) 

https://dev.mysql.com/doc/refman/8.0/ja/performance-schema-events-statements-current-table.html

まとめ

参考にした資料をいかに共有します。

SQl,DB
スポンサーリンク