文章目录
二、设置performance_schema默认启用及查询引擎元数据
动态对performance_schema进行配置的配置表
前言
一般查询性能数据时,会使用sys schema下的视图,但sys schema中的数据实际上来自于performance_schema 和 information_schema 中获取的。
一、查询当前数据库版本是否支持
performance_schema被视为存储引擎,如果该引擎可用,则应该在INFORMATION_SCHEMA.ENGINES表或show engines语句的输出中可以看到Support字段值为YES,如下所示:
1.使用INFFORMATION_SCHEMA.ENGINES表查询:
SELECT * FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE ='PERFORMANCE_SCHEMA';
2.使用SHOW ENGINES语句查询:
SHOW ENGINES;
Support字段值为YES时表示performance_schema已初始化且可以使用。
Support字段值为OFF时表示performance_schema在启用时发生错误,可通过错误日志进行排查。
注:该引擎在MYSQL5.6及之前的版本默认没有启用,在MYSQL537及之后的版本中为默认启用。
二、设置performance_schema默认启用及查询引擎元数据
1.启用引擎
如果要显式启用或关闭performance_schema,则需要使用参数performance_schema=ON|OFF来设置,并在my.cnf中进行配置。
mysqld启动后使用下列语句查看是否启用生效,OFF为启用时出错,ON为初始化成功可以使用。
show variables like 'performance_schema';
2.查询引擎元数据
1.通过查询INOEMATION_SCHEMA.TABLES表:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'performance_schema';
2.在performation_schema库中使用SHOW TABLES查询:
USE performance_schema;
SHOW TABLES FROM performation_schema;
三、performance_schema表的分类
performance_schema库下的表可以按照监视的不同维度进行分组。
语句事件记录表
记录语句事件信息的表,包括:
- events_statements_current(当前语句事件表)
- events_statements_history(历史语句事件表)
- events_statements_history_long(长语句事件表)
- summary表(聚合后的摘要表)
通过下列语句查询:
SHOW TABLES LIKE 'events_statement%';
等待事件记录表
通过下列语句查询:
SHOW TABLES LIKE 'events_wait%';
阶段事件记录表
通过下列语句查询:
SHOW TABLES LIKE 'events_stage%';
事务事件记录表
通过下列语句查询:
SHOW TABLES LIKE 'events_transaction%';
监视文件系统层调用的表
通过下列语句查询:
SHOW TABLES LIKE '%file%';
监视内存使用的表
通过下列语句查询:
SHOW TABLES LIKE '%memory%';
动态对performance_schema进行配置的配置表
通过下列语句查询:
SHOW TABLES LIKE '%setup%';
四、performance_schema的配置和使用
1.简单配置
打开等待事件的采集器配置开关:
UPDATE setup_instruments SET ENABLED='YES',TIMED='YES' where name like 'wait%';
打开等待时间的报错表低配置开关:
UPDATE setup_consumers SET ENABLED ='YES' WHERE NAME LIKE '%wait%';
2.使用
查看当前Server正在做的事情:
SELECT * FROM events_waits_current LIMIT 1\G;
- *_current表:记录每个线程最新监视事件(只记录1条,完成工作后不再记录该线程的事件信息)。
- *_history表:记录每个线程已经执行完成的事件信息(只记录10条,超出则覆盖)。
- *_history_long表:记录所有线程已经执行完成的事件信息(只记录10000条,超出则覆盖)。
- summary表:提供所有事件的汇总信息,以不同的方式汇总事件数据。
- instance表:记录了哪些类型的对象会被检测,这些对象在被Server使用时,在该表中产生一条事件记录。
总结
MYSQL的performance_schema是运行在较低级别的用于监控MYSQL Server运行过程中的资源消耗、资源等待等情况的一个功能特征;performance_schema实现机制遵循以下设计目标:
- 启用performance_schema不会导致server的行为发生变化。
- 在该实现机制中没有增加新的关键字或语句,解析器不会变化。
- 启用performance_schema之后,server会持续不间断地监测,开销很小,不会导致server不可用。
- 即使performance_schema的监测机制在内部对某事件执行监测失败,也不会影响server正常运行。