目录标题
MySQL 的 sys 库(sys Schema) 是从 MySQL 5.7 开始引入的一个系统辅助库,由 MySQL 官方提供,用来帮助 DBA 和开发者更方便地查看性能、监控状态、诊断问题。
它本质上是一个**“可读性更强的 performance_schema + information_schema 的包装层”**。
✅ 一句话总结
sys 库 = 对 performance_schema 的复杂监控数据进行美化 + 预处理,提供易懂的视图、函数和过程,用于性能分析与故障诊断。
📌 一、sys 库的用途
sys 库主要解决两个问题:
1)让 performance_schema(PFS)更容易用
performance_schema 提供了非常详细的监控数据,但表多、字段多、语句复杂。
sys 库基于 PFS 做了:
- 封装(使用视图简化)
- 美化(格式化数字、人类可读)
- 聚合(按照线程、用户、主机、表、SQL 分类)
- 性能分析(热点表、慢 SQL、锁等待)
举例:
| 功能 | sys 中的视图 | 描述 |
|---|---|---|
| 找最耗时 SQL | statements_with_runtimes_in_95th_percentile | 找耗时前 5% 的 SQL |
| 找 IO 热点表 | io_global_by_file_by_bytes | 查看哪些表最耗 IO |
| 找 CPU 使用高的线程 | session_account_connect_attrs | 看哪些 session 很忙 |
| 查看 InnoDB 缓冲池热点 | innodb_buffer_stats_by_table | 哪些表在内存中最热 |
| 查看锁等待 | innodb_lock_waits | 直接看到谁锁住了谁 |
| 找出使用最多资源的用户 | user_summary_by_statement_latency | 用户维度性能分析 |
📌 二、sys 库包含哪些内容?
sys 库里主要有四类对象:
✔ 1)视图(views)
帮助你用简单 SQL 查询复杂监控信息
例如:
host_summaryuser_summaryschema_table_statisticsstatements_with_errors_or_warningsio_by_thread_by_latencymemory_by_thread_by_current_bytes
✔ 2)存储过程(procedures)
ps_setup_enableps_setup_disableps_setup_resetps_setup_reload
用于:
- 启用或禁用 performance_schema 的监控
- 重置或刷新 PFS 配置
✔ 3)函数(functions)
返回:
- 可读性格式(human readable)
- 比如把字节转换成 KB、MB、GB
例如:
format_bytes(bytes)format_time(microseconds)format_statement(sql)
📌 三、什么时候使用 sys 库?
✔ 场景 1:排查 CPU 飙高
select * from sys.user_summary_by_statement_latency;
看到哪个用户/SQL 消耗 CPU 最多。
✔ 场景 2:排查 IO 和慢查询
select * from sys.statements_with_runtimes_in_95th_percentile;
✔ 场景 3:发现热点表
select * from sys.schema_table_statistics;
✔ 场景 4:发现锁等待链
select * from sys.innodb_lock_waits;
✔ 场景 5:看哪些线程/用户最忙
select * from sys.host_summary;
select * from sys.user_summary;
📌 四、sys 库是否可以删除?
❌ 千万不要删除(MySQL 官方强烈不建议删除)
删除后你将无法使用许多性能分析视图,而且升级或重建困难。
📌 五、总结
| 项目 | 说明 |
|---|---|
| sys 库是什么? | performance_schema 的易用封装层 |
| 用途 | 性能分析、监控、诊断 |
| 包含 | 视图、函数、存储过程 |
| 是否可删除 | ❌ 不建议删除 |
| 使用场景 | CPU、IO、锁、慢 SQL、线程等分析 |
149

被折叠的 条评论
为什么被折叠?



