专栏 | MySQL 5.7系列之sys schema(1) by吴炳锡
作者:吴炳锡(知数堂培训联合创始人)
0、导读
MySQL 5.7引入了sys schema,有了它,我们排查分析一些问题时将更得心应手。sys schema里主要存储的是视图、存储过程、函数等。
视图:用于结果的汇总展示及配置持久化;
存储过程:用于对Performance schema的控制及收集;
函数:对于Performance schema的配置及数据格式化。
本文约1500字,阅读时间约8分钟。
1、sys schema数据来源
sys schema的数据主要源自performance_schema。其目标是把查询performance_schema的复杂度降低,让DBA能更好地利用这个库里的数据,更快地了解MySQL的运行情况。
2、查看sys库的版本
mysql> select * from sys.version;
+--------------+-----------------+
| sys_version | mysql_version |
+--------------+-----------------+
| 1.5.1 | 5.7.16-log |
+--------------+-----------------+
3、sys schema里都有什么
英文字母开头的,这种是适合人类常规阅读,显示结果是格式化后的数据,比如host_summary:
"x$"开头的,这种是适合工具采集数据,原始类数据,比如x$host_summary:
接下来看看sys schem可以支持查询哪些数据:
4、sys schema详细介绍
"sys_"开头的是schema配置表
sys_config用于sys schema库的配置
视图
视图名称 | 作用 |
---|---|
"host"开头 | 以IP分组相关的统计信息 |
"innodb"开头 | innodb buffer及row lock相关信息 |
"io"开头 | 数据内不同维度展的IO相关的信息 |
"memory"开头 | 以IP,连接,用户,分配的类型分组及总的占用显示内存的使用 |
"metrics"开头 | DB的内部的统计值 |
"processlist"开头 | 线程相关的信息(包含内部线程及用户连接) |
"ps_"开头 | 没有工具统计的一些变量(没看出来存在的价值) |
"schema"开头 | 表结构相关的信息,例如: 自增,索引, 表里的每个字段类型,等待的锁等等 |
"session"开头 | 用户连接相关的信息 |
"statement"开头 | 基于语句的统计信息(重点) |
"statements"开头 | 出错的语句,进行全表扫描, 运行时间超长,排序相等(重点) |
"user_"开头 |
好了,本次先介绍到这里。后面我们将继续介绍sys schema的一些主要用途。
哪个用户或者来自哪个IP的客户端使用了最多的资源;
数据库连接来自哪里,以及这些连接对数据库的请求情况是怎样的;
数据库中哪些SQL被频繁执行;
哪个文件产生了最多的IO,读多,还是写的多;
哪个表上的IO请求最多;
哪个表被访问的最多;
哪些语句延迟比较严重;
哪些SQL语句使用了临时表,又有哪些用到了磁盘临时表;
哪个表占用了最多的buffer pool;
每个库(database)占用多少buffer pool;
每个连接分配多少内存;
MySQL内部有多个线程在运行;
等等其他...