SELECT *
FROM performance_schema.setup_actors;
这是用于配置是否为新的前台server线程(与客户端连接相关联的线程)启用监视和历史事件日志记录的表
UPDATE performance_schema.setup_actors
SET ENABLED = 'NO',
HISTORY = 'NO'
WHERE HOST = '%'
AND USER = '%';
关闭HOST为%并且USER为%的记录功能(这个功能在MySQL重启后会自动还原)
这个时候我们在查看第一步的SQL检查是否关闭
INSERT INTO performance_schema.setup_actors
(HOST, USER, ROLE, ENABLED, HISTORY)
VALUES ('localhost', 'test_user', '%', 'YES', 'YES');
我们自己往setup_actors 表中插入一个自定义用户用于记录,HOST指定为localhost,USER指定为test_user,并且开启日志监控和记录
此时我们再去查看第一步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_%';
sql
UPDATE performance_schema.setup_consumers
SET ENABLED = 'YES'
WHERE NAME LIKE '%events_stages_%';
设置系统记录哪些事件,在setup_instruments表中可以看到所有的事件支持,在setup_consumers表中可以看到一些我也不知道是什么的数据,反正就是一些监控的配置,YES代表启用,NO代表不启用
select *
from emp
where emane = 'FJIkdL';
执行需要检测事件的SQL语句
SELECT EVENT_ID, TRUNCATE(TIMER_WAIT/1000000000000,6) as Duration, SQL_TEXT
FROM performance_schema.events_statements_history_long;
查询所有的日志记录类似于以前的show profiles;每一个记录都会带一个id
SELECT event_name AS Stage, TRUNCATE(TIMER_WAIT / 1000000000000, 6) AS Duration
FROM performance_schema.events_stages_history_long
WHERE NESTING_EVENT_ID = 327;
罗小波·沃趣科技高级数据库技术专家-《performance_schema全方位介绍》
MySQL8.0官方文档