mysql 5.7新数据库sys解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 5.7新数据库sys解析相关的知识,希望对你有一定的参考价值。

mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息
这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助
 
这个库在mysql5.7中是默认存在的,在mysql5.6版本以上可以手动导入,数据库包请在github自行查找
 
这个库包括了哪些内容?
这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据
存储过程可以可以执行一些性能方面的配置,也可以得到一些性能诊断报告内容
存储函数可以查询一些性能信息
 
分析每个视图和表之前先说明一下:关于带不带x$,去掉x$同名的视图他们的数据是相同的,区别在于不带x$的单位更加符合直接阅读经过了转换,而带x$是为了某些工具存在而使用的原始单位(多数应该是mysql默认的)
 
下面就结合mysql官方手册来详细分析sys库

1.表 
    1.1 sys_config 表
        这是在这个系统库上存在的唯一一个表了
        先看看表结构
CREATE TABLE `sys_config` (
  `variable` varchar(128) NOT NULL,
  `value` varchar(128) DEFAULT NULL,
  `set_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `set_by` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`variable`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

        variable 配置选项名称

        value     配置选项值
        set_time 该行配置修改的时间
        set_by     该行配置信息修改者,如果从被安装没有修改过,那么这个数据应该为NULL
 
    表中默认数据为
variable    
value    
set_time    
set_by
diagnostics.allow_i_s_tables  
  OFF 
  2015-11-20 16:04:38 
diagnostics.include_raw 
   OFF
   2015-11-20 16:04:38 
statement_performance_analyzer.limit 
  100
  2015-11-20 16:04:38  
statement_performance_analyzer.view 
 
2015-11-20 16:04:38
statement_truncate_len  
  64 
   2016-01-22 17:00:16    
 
    以上值的会话变量为@sys.+表中variable字段,譬如:@sys.statement_truncate_len 
可以set @sys.statement_truncate_len = 32 临时改变值,在会话中会一直使用这个值,如果想要恢复使用表的默认值,只需要将这个会话值设置为null;set @sys.statement_truncate_len = null;
 
diagnostics.allow_i_s_tables  
diagnostics.include_raw 
这两个值默认为OFF ,前者如果开启表示允许diagnostics() 存储过程执行扫描information_schema.tables 表,如果表很多,那么可能会很耗性能,后者开启将会从metrics 视图输出未加工处理的数据 。diagnostics() 具体内容见下面对diagnostics()的解释。
 
statement_performance_analyzer.limit 
视图在没有加limit限制时,返回的最大行数
statement_performance_analyzer.view 
(略)
以上参数为mysql5.7.9加入
 
statement_truncate_len  
通过format_statement()函数返回值的最大长度
 
这个表非默认选项还有一个@sys.debug参数
可以手动加入
INSERT INTO sys_config (variable, value) VALUES(‘debug‘, ‘ON‘);
UPDATE sys_config SET value = ‘OFF‘ WHERE variable = ‘debug‘;
SET @sys.debug = NULL;
具体内容请参考官方文档,此处不做介绍
 
关于这个表有两个触发器
1.1.1 sys_config_insert_set_user触发器
如果加入新行通过insert语句,那么这个触发器会把set_by列设置为当前操作者
1.1.2 sys_config_update_set_user触发器           
 
如果加入新行通过update语句,那么这个触发器会把set_by列设置为当前操作者
 
2.视图
以下部分只介绍不包含x$的视图内容
 
2.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
该主机分配的内存总数
 
2.2  The host_summary_by_file_io_type
•host
主机
•event_name
IO事件名称
•total
该主机发生的事件
•total_latency
该主机发生IO事件总延迟时间
•max_latency
该主机IO事件中最大的延迟时间
 
2.3 The host_summary_by_file_io
•host
主机
•ios
IO事件总数
•io_latency
IO总的延迟时间
 
2.4 The host_summary_by_stages
• host
主机
• event_name
stage event名称
• total
stage event发生的总数
• total_latency
stage event总的延迟时间
• avg_latency
stage event平均延迟时间
 
 
2.5 The host_summary_by_statement_latency
• host
主机
• total
这个主机的语句总数
• total_latency
这个主机总的延迟时间
• max_latency
主机最大的延迟时间
• lock_latency
等待锁的锁延迟时间
• rows_sent
该主机通过语句返回的总行数
• rows_examined
在存储引擎上通过语句返回的行数
• rows_affected
该主机通过语句影响的总行数
• full_scans
全表扫描的语句总数
 
 
2.6  The 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
全表扫描的语句事件总数
 
 
2.7 The innodb_buffer_stats_by_schema  
这个表是通过数据库统计innodb引擎的innodb缓存
• object_schema
数据库名称
• allocated
分配给当前数据库的总的字节数
• data
分配给当前数据库的数据字节数
• pages
分配给当前数据库的总页数
• pages_hashed
分配给当前数据库的hash页数
• pages_old
 
分配给当前数据库的旧页数
• rows_cached
 
当前数据库缓存的行数
 
2.8 The innodb_buffer_stats_by_table
这个表是通过每个表innodb引擎的innodb缓存
• object_schema
数据库名称
• object_name
表名称
• allocated
分配给表的总字节数
• data
分配该表的数据字节数
• pages
分配给表的页数
• pages_hashed
分配给表的hash页数
• pages_old
分配给表的旧页数
• rows_cached
表的行缓存数

 

以上是关于mysql 5.7新数据库sys解析的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 5.7 SYS scheme解析

性能优化利器:剖析MySQL 5.7新特征 sys schema

MySQL 5.7 SYS系统SCHEMA

MySQL- 5.7 sys schema

MySQL 5.7 新增默认账号 mysql.session和mysql.sys

通过 SYS 查看 MySQL 5.7 的锁