Sys库里的数据来源
Sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。
Sys库下有两种表
字母开头: 适合人阅读,显示是格式化的数
x$开头 : 适合工具采集数据,原始类数据
每类表大概介绍
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语句是什么样?
4. 哪个文件产生了最多的IO,它的IO模式是怎么样的?
5. 那个表的IO最多?
6. 哪张表被访问过最多?
7. 哪些语句延迟比较严重?
8. 哪些SQL语句使用了磁盘临时表
9. 哪张表占用了最多的buffer pool
10. 每个库占用多少Buffer pool
11. 每个连接分配多少内存?
12. MySQL内部现在有多个线程在运行?
mysql> select * from host_summary\G
*************************** 1. row***************************
host: localhost #从哪个服务器链接过来的 如果为null 表示内部链接
statements: 203 这台服务器执行了多少语句
statement_latency: 105.45 ms 这台服务器发来等待语句执行时间
statement_avg_latency: 519.45 us 该服务器等待语句执行的平均时间
table_scans: 7 该服务器扫描表的次数(非全表)
file_ios: 795 该服务器i/o时间请求的次数
file_io_latency: 27.43 ms 该服务器请求等待i/o的时间
current_connections: 1 该服务器当前的连接数
total_connections: 1 该服务器总db共链接多少次
unique_users: 1 该服务器上有几个不同用户账户连接过来
current_memory: 0 bytes 该服务器上当前链接等占用的内存
total_memory_allocated: 0 bytes 该服务器上的请求总共使用内存量
mysql>select host,current_connections from host_summary;
+-----------+---------------------+
| host |current_connections |
+-----------+---------------------+
| localhost | 1 |
+-----------+---------------------+
----------------------------------------------------------------------------------------------------
| host_summary
#主机概要
host: 监听连接过的主机
statements 当前主机执行的语句总数
statement_latency 语句等待时间
statement_avg_latency 执行语句平均延迟时间
table_scans 表扫描次数
file_ios io时间总数
file_io_latency 文件io 延迟
current_connections 当前连接数
total_connections: 总连接数
unique_users: 改主机唯一用户数
current_memory: 当前账户分配的内存
total_memory_allocated: 该主机内存总数
------------------------------------------------------------------------------------------------------
| host_summary_by_file_io
host 主机
ios: io事件总数
io_latency io总的延迟时间
--------------------------------------------------------------------------------------------------------------------
| host_summary_by_file_io_type
host: 主机
event_name io事件名称
total: 该主机发生的事件
total_latency: 该主机发生io 时间总延迟时间
max_latency: 该主机io 事务中最大的延迟时间
-----------------------------------------------------------------------------------------------------------------------------
| host_summary_by_stages
host 主机
event_name stage event名称
total: stage event发生的总数
total_latency stage event总的延迟时间
avg_latency stage event 平均延迟时间
----------------------------------------------------------------------------------------------------------------
| host_summary_by_statement_latency
host: 主机
total: 这个主机的语句总数
total_latency: 这个主机总的延迟时间
max_latency: 主机最大的延迟时间
lock_latency: 等待锁的锁延迟时间
rows_sent: 该主机通过语句返回的总行数
rows_examined: 在存储引擎上通过语句返回的行数
rows_affected: 该主机通过语句影响的总行数
full_scans: 全表扫描的语句总数
--------------------------------------------------------------------------------------------------------------------------
| host_summary_by_statement_type
host: 主机
statement: 最后的语句时间名称
total: sql语句总数
total_latency: sql语句总延迟数
max_latency: 最大的sql语句延迟数
lock_latency: 锁延迟总数
rows_sent: 语句返回的行总数
rows_examined: 通过存储引擎的sql语句的读取总行数
rows_affected: 语句影响的总行数
full_scans: 全表扫描的语句事件总数
----------------------------------------------------------------------------------------------------------------------------------------------------------
| innodb_buffer_stats_by_schema
每个库占用多少 buffer pool
object_schema: 数据库的名称
allocated:分配给当前数据库的总的字节数
data: 分配给当前数据的数据字节
pages: 分配给当前数据库的总页数
pages_hashed: 分配给当前数据库的hash页数
pages_old: 分配给当前数据库的旧页数
rows_cached: 当前数据库缓存的行数
------------------------------------------------------------------------------------------------------------------------
| innodb_buffer_stats_by_table
#那张表 占用最多的 buffer pool
select * from innodb_buffer_stats_by_table order bypages desc limit 10;
object_schema: 数据库的名称
object_name: 表名称
allocated: 分配给表的总字节数
data: 分配该表的数据字节数
pages: 分配给表的页数
pages_hashed: 分配给表的hash页数
pages_old: 分配给表的旧页数
rows_cached: 表的行缓存数
#那张表的io最多
select * from io_global_by_file_by_bytes limit 10\G
----------------------------------------------------------------------------------------------------------------