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