将历史事件的集合限制为运行查询的用户
只对来自本地root用户连接的历史事件进行记录:
UPDATE performance_schema.setup_actorsSET ENABLED = 'NO', HISTORY = 'NO'WHERE HOST = '%' AND USER = '%';
INSERT INTO performance_schema.setup_actors(HOST,USER,ROLE,ENABLED,HISTORY)VALUES('localhost','root','%','YES','YES');
mysql> SELECT * FROM performance_schema.setup_actors;+-----------+-----------+------+---------+---------+| HOST | USER | ROLE | ENABLED | HISTORY |+-----------+-----------+------+---------+---------+| % | % | % | NO | NO || localhost | test_user | % | YES | YES |+-----------+-----------+------+---------+---------+
确保相关配置开启
UPDATE performance_schema.setup_instrumentsSET ENABLED = 'YES', TIMED = 'YES'WHERE NAME LIKE '%statement/%';
UPDATE performance_schema.setup_instrumentsSET ENABLED = 'YES', TIMED = 'YES'WHERE NAME LIKE '%stage/%';
UPDATE performance_schema.setup_consumersSET ENABLED = 'YES'WHERE NAME LIKE '%events_statements_%';
UPDATE performance_schema.setup_consumersSET ENABLED = 'YES'WHERE NAME LIKE '%events_stages_%';
查询执行速度
- 运行任何你想要测试的SQL语句
查询上面那条SQL语句的
EVENT_IDSELECT EVENT_ID, TRUNCATE(TIMER_WAIT/1000000000000,6) as Duration, SQL_TEXTFROM performance_schema.events_statements_history_long WHERE SQL_TEXT like '%<SQL语句>%';
使用第2步查出的
event_id,查询执行结果SELECT event_name AS Stage, TRUNCATE(TIMER_WAIT/1000000000000,6) AS DurationFROM performance_schema.events_stages_history_long WHERE NESTING_EVENT_ID=<event_id>;
