

对于MySQL日常运维而言,performance_schema堪称性能监控的“核心利器”,它如同MySQL服务器的“实时监控仪表盘”,内置丰富的系统表,可精准追踪服务器的各类事件、资源占用及语句执行等关键信息。
本文将系统梳理performance_schema中最常用的基础配置相关表,助力快速上手,掌握MySQL性能监控的配置要领。
一、什么是performance_schema基础配置表?
基础配置表主要用于定义监控规则、控制监控范围,其本质是告知MySQL:监控对象、监控事件类型及监控方式。
此类表的命名具有明显规律:均以`setup_`开头。可通过以下SQL快速查询所有基础配置表:
```sql
SHOWTABLESFROMperformance_schemaLIKE'setup%';
```
执行结果示例:
```
++
|Tables_in_performance_schema(setup%)|
++
|setup_actors|
|setup_consumers|
|setup_instruments|
|setup_objects|
|setup_timers|
++
5rowsinset(0.00sec)
```
二、基础配置表详解
1.setup_actors
核心作用:设定哪些“用户–主机”组合的数据库操作需要被performance_schema监控。默认监控所有用户与主机。
表结构:
```sql
DESCperformance_schema.setup_actors;
```
关键字段说明:
`HOST`:主机名,`%`表示所有主机;
`USER`:用户名,`%`表示所有MySQL用户;
`ROLE`:用户角色;
`ENABLED`:是否启用监控;
`HISTORY`:是否记录历史。
查询示例:
```sql
SELECTFROMperformance_schema.setup_actors;
```
结果一般为一条`%/%/%`记录,表示监控所有用户、主机与角色。
2.setup_consumers
核心作用:决定performance_schema接收哪些类型的监控数据,相当于数据接收器的开关。若某消费者被禁用,即使对应监控点开启,也不会收集数据。
表结构:
```sql
DESCperformance_schema.setup_consumers;
```
关键字段:
`NAME`:消费者名称,对应具体监控数据类型;
`ENABLED`:是否启用。
重要消费者(建议启用):
`events_statements_%`:SQL语句监控;
`events_transactions_%`:事务监控;
`events_waits_%`:等待事件监控;
`global_instrumentation`:全局监控开关;
`thread_instrumentation`:线程级监控开关。
查询示例:
```sql
SELECTNAME,ENABLED
FROMperformance_schema.setup_consumers
WHERENAMELIKE'events%';
```
3.setup_instruments
核心作用:定义MySQL服务器上哪些具体操作需要被监控,相当于“监控探针”。每个仪器对应一个具体操作,如文件I/O、SQL执行、内存分配等。
表结构:
```sql
DESCperformance_schema.setup_instruments;
```
关键字段:
`NAME`:监控点名称,可通过前缀区分类型;
`ENABLED`:是否启用;
`TIMED`:是否收集时间信息。
主要监控类别:
`wait/%`:等待事件(锁、I/O等);
`statement/%`:SQL语句;
`transaction%`:事务操作;
`memory/%`:内存使用;
`error/%`:错误事件。
查询示例:
```sql
SELECTNAME,ENABLED,TIMED
FROMperformance_schema.setup_instruments
WHERENAMELIKE'statement/%'LIMIT10;
```
4.setup_objects
核心作用:精确控制哪些数据库对象被监控,例如仅监控某张业务表或某个存储过程,避免资源浪费。
表结构:
```sql
DESCperformance_schema.setup_objects;
``
关键字段:
`OBJECT_TYPE`:对象类型(TABLE、FUNCTION、PROCEDURE等);
`OBJECT_SCHEMA`:数据库名;
`OBJECT_NAME`:对象名;
`ENABLED`:是否启用监控;
`TIMED`:是否计时。
查询示例:
```sql
SELECTFROMperformance_schema.setup_objects
WHEREOBJECT_SCHEMA='mysql';
```
5.setup_timers
核心作用:指定performance_schema收集数据时使用的时间单位(如纳秒、微秒),统一时间统计标准。
表结构:
```sql
DESCperformance_schema.setup_timers;
```
关键字段:
`NAME`:计时器名称;
`TIMER_NAME`:时间单位类型。
查询示例:
```sql
SELECTFROMperformance_schema.setup_timers;
```
三、日常关键配置操作
掌握基础表结构后,以下为四个高频场景的配置示例:
1.启用SQL语句监控
```sql
UPDATEperformance_schema.setup_consumers
SETENABLED='YES'
WHERENAMELIKE'events_statements%';
UPDATEperformance_schema.setup_instruments
SETENABLED='YES',TIMED='YES'
WHERENAMELIKE'statement/%';
```
2.启用事务监控
```sql
UPDATEperformance_schema.setup_consumers
SETENABLED='YES'
WHERENAMELIKE'events_transactions%';
UPDATEperformance_schema.setup_instruments
SETENABLED='YES',TIMED='YES'
WHERENAMELIKE'transaction%';
```
3.启用等待事件监控
```sql
UPDATEperformance_schema.setup_consumers
SETENABLED='YES'
WHERENAMELIKE'events_waits%';
UPDATEperformance_schema.setup_instruments
SETENABLED='YES',TIMED='YES'
WHERENAMELIKE'wait/%';
```
4.监控特定表
```sql
INSERTINTOperformance_schema.setup_objects
VALUES('TABLE','your_db','your_table','YES','YES');
```
⚠️重置配置(谨慎操作):
```sql
TRUNCATETABLEperformance_schema.setup_consumers;
TRUNCATETABLEperformance_schema.setup_instruments;
TRUNCATETABLEperformance_schema.setup_actors;
TRUNCATETABLEperformance_schema.setup_objects;
```
四、常用状态查询示例
1.查看启用监控项数量
```sql
SELECT
(SELECTCOUNT()FROMperformance_schema.setup_consumersWHEREENABLED='YES')ASenabled_consumers,
(SELECTCOUNT()FROMperformance_schema.setup_instrumentsWHEREENABLED='YES')ASenabled_instruments;
```
2.按类别分组查看启用监控点
```sql
SELECT
NAME,
ENABLED,
TIMED,
CASE
WHENNAMELIKE'wait/%'THEN'等待事件'
WHENNAMELIKE'statement/%'THEN'SQL语句'
WHENNAMELIKE'transaction%'THEN'事务'
ELSE'其他'
ENDAScategory
FROMperformance_schema.setup_instruments
WHEREENABLED='YES'
ORDERBYcategory,NAME;
```
3.检查语句类消费者配置
```sql
SELECTFROMperformance_schema.setup_consumers
WHERENAMEIN('events_statements_current','events_statements_history','events_statements_history_long');
```
小结
performance_schema的五张基础配置表(`setup_`系列)构成了监控体系的基石:
`setup_actors`:定义监控对象范围
`setup_instruments`:控制监控点启停
`setup_consumers`:管理数据接收链路
`setup_objects`:实现对象级精准监控
`setup_timers`:统一时间计量标准
熟练掌握这五张表的配置与查询,即可灵活构建MySQL性能监控体系,为后续SQL优化、锁分析、事务追踪及资源监控奠定坚实基础。

一家致力于优质服务的软件公司
8年互联网行业经验1000+合作客户2000+上线项目60+服务地区

关注微信公众号
