学习MySQL 5.7的Sys库使用(上)
MySQL 5.7 引入sys库 用于帮助DBA分析一些问题。 sys库里面就是一些存储过程,视图,函数等。
视图或是表: 用于结果的汇总展示及配置持久化
存储过程: 用于对Performance schema的控制及收集。
函数: 对于Performance schema的配置及数据格式化。
今天主要先讲解视图相关的内容。其它内容看大家需求。
Sys库里的数据来源
Sys库所有的数据源来自:performance_schema 。目标是把Performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。
查看sys库的版本
select * from sys.version;
+-------------+---------------+
| sys_version | mysql_version |
+-------------+---------------+
| 1.5.1 | 5.7.14-log |
+-------------+---------------+
Sys库下有两种表
root@localhost [sys]>select host,statements, statement_latency,statement_avg_latency from host_summary;
+-----------+------------+-------------------+-----------------------+
| host | statements | statement_latency | statement_avg_latency |
+-----------+------------+-------------------+-----------------------+
| localhost | 92 | 72.24 ms | 785.21 us |
+-----------+------------+-------------------+-----------------------+
1 row in set (0.01 sec)
root@localhost [sys]>select host,statements, statement_latency,statement_avg_latency from x$host_summary;
+-----------+------------+-------------------+-----------------------+
| host | statements | statement_latency | statement_avg_latency |
+-----------+------------+-------------------+-----------------------+
| localhost | 91 | 63268768000 | 695261186.8132 |
+-----------+------------+-------------------+-----------------------+
1 row in set (0.01 sec)
接下来看看sys可以支持查看方向:
select substring_index(table_name,"_",1) ,count(*) from information_schema.tables where TABLE_SCHEMA='sys' and table_name not like 'x$%' group by substring_index(table_name,"_",1);
+-----------------------------------+----------+
| substring_index(table_name,"_",1) | count(*) |
+-----------------------------------+----------+
| host | 6 |
| innodb | 3 |
| io | 5 |
| latest | 1 |
| memory | 5 |
| metrics | 1 |
| processlist | 1 |
| ps | 1 |
| schema | 9 |
| session | 2 |
| statement | 1 |
| statements | 5 |
| sys | 1 |
| user | 6 |
| version | 1 |
| wait | 2 |
| waits | 3 |
+-----------------------------------+----------+
17 rows in set (0.00 sec)
每类表大概介绍
sys_开头是库里的配置表:
sys_config用于sys schema库的配置
视图:
host : 以IP分组相关的统计信息
innodb : innodb buffer 相关信息
io : 数据内不同维度展的IO相关的信息
memory : 以IP,连接,用户,分配的类型分组及总的占用显示内存的使用
metrics : DB的内部的统计值
processlist : 线程相关的信息(包含内部线程及用户连接)
ps_ : 没有工具统计的一些变量(没看出来存在的价值)
schema : 表结构相关的信息,例如: 自增,索引, 表里的每个字段类型,等待的锁等等
session : 用户连接相关的信息
statement : 基于语句的统计信息(重店)
statements_ : 出错的语句,进行全表扫描, 运行时间超长,排序相等(重点)
user_ : 和host_开头的相似,只是以用户分组统计
wait : 等待事件,比较专业,难看懂。
waits : 以IP,用户分组统计出来的一些延迟事件,有一定的参考价值。
先介绍到这里,大家先有一个印象。
Sys库能做什么,那么我们先来看看以下的问题,对于数据库,你有没有以下的疑问?
1. 谁使用了最多的资源? 基于IP或是用户?
2. 大部分连接来自哪里及发送的SQL情况?
3. 机器执行多的SQL语句是什么样?
3. 哪个文件产生了最多的IO,它的IO模式是怎么样的?
4. 那个表的IO最多?
4. 哪张表被访问过最多?
5. 哪些语句延迟比较严重?
6. 哪些SQL语句使用了磁盘临时表
7. 哪张表占用了最多的buffer pool
8. 每个库占用多少Buffer pool
9. 每个连接分配多少内存?
10. MySQL内部现在有多个线程在运行?
...
本文分享自 MySQLBeginner 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!