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 DESCTIME_START, TIME_END の単位には注意が必要です。適宜ns, msなどに単位変換すると見やすくなると思います。
https://dev.mysql.com/doc/refman/8.0/ja/performance-schema-events-statements-current-table.html
TIME_START,TIME_ENDは単位がこれらの値の単位はピコ秒 (秒の 1 兆分の 1)
まとめ
参考にした資料をいかに共有します。
リンク
リンク
