MySQLでクエリの速度を計測する

やりたいこと

MySQLでクエリ速度をコマンドから計測したい。

やりかた

まずは計測したいクエリを用意します。

query.sql
SELECT * FROM employees WHERE gender = "F";

次に、performance_schemaで時間を取れるようにします。

query.sql
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE '%statement/%';
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE '%stage/%';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%events_statements_%';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%events_stages_%';

用意したクエリを実行します。 その後、performance_schemaから時間を取得します。

query.sql
SELECT
  EVENT_ID,
  TRUNCATE(TIMER_WAIT/1000000000000,6) AS Duration,
  SQL_TEXT
FROM
  performance_schema.events_statements_history_long
WHERE
  SQL_TEXT = 'SELECT * FROM employees WHERE gender = "F"';

EXPLAINも実行しておきましょう これでチューニング用にデータとれました〜

query.sql
EXPLAIN SELECT * FROM employees WHERE gender = "F";

id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	employees	NULL	ALL	NULL	NULL	NULL	NULL	292578	50.00	Using where
About

現役フリーランスエンジニアの勉強・備忘録。
バックエンドがメイン。フロントからインフラまで色々やってます。