概述
performance_schema提供监控策略及大量监控项,包括:元数据锁、进度跟踪、事务、内存使用及存储程序等。但是,performance_schema又过于复杂,操作不便,所以5.7新增了 sys schema,基础数据来自于 performance 跟 information_shcema两个库,本身数据库不存储及集采数据。
一、sys schema里面视图的分类
那么sys schema在查询中的功能,哪些可以查看数据库服务资源的使用情况?哪些主机对数据库服务器的访问量最大?实际上的内存使用情况?这就要了解里面的视图了。
1、主机相关信息
以host_summary开头的视图,主要汇总了IO延迟的信息,从主机、文件事件类型、语句类型等角度展示文件IO的信息;
2、innodb相关信息
以innodb开头的视图,汇总了innodb buffer page信息和事务等待innodb锁信息;
3、IO使用情况
以IO开头的视图,总结了IO使用者的信息,包括等待IO的情况、IO使用量情况,从各个角度分组展示;
4、内存相关信息
以memory开头的视图,从主机、线程、用户、事件角度展示内存使用情况;
5、连接与会话相关信息
其中,processlist 和 session相关的视图,总结了会话相关的信息;
6、表相关信息
以schema_table开头的视图,从全表扫描、innodb缓冲池等方面展示了表统计信息;
7、索引相关信息
其中包含index的视图,统计了索引使用的情况,以及重复索引和未使用的索引情况;
8、语句相关信息
以statement开头的视图,统计的规范化后的语句使用情况,包括错误数、警告数、执行全表扫描的、使用临时表、执行排序等信息;
9、用户相关信息
以user开头的视图,统计了用户使用的文件IO,执行的语句统计信息等;
10、等待事件相关信息
以wait开头的视图,从主机和事件角度展示等待类事件的延迟情况;
二、sys schema日常应用
1、查看process
1.1、常用的3个查询
有以下3个查询:
其中,show processlist为简要查看当前连接数据库情况,包含SQL语句的statement列仅提供部分SQL,而show full processlist则提供完整的SQL 语句,information_schema.processlist的内容与show full processlist 内容一致,但是可以以表格查询的形式添加where条件,达到自己的使用需求。
show processlist; show full processlist; select * from information_schema.processlist where state!='';
1.2、sys的四个视图
除此之外,sys提供以下四个视图查看 连接情况,这四个则更为详细的提供了 行数情况、临时表情况、当前SQL以及最后提交SQL(即使是sleep状态,这里也有最后提交的SQL可以查看)等信息。
若想详细查看,可以通过 `performance_schema`.`events_statements_current` 表格查看,通过sys.processlist 的thd_id关联查看。
select * from sys.processlist;select * from sys.session;select * from sys.x$processlist;select * from sys.x$session;
2、查看表访问量
SELECTtable_schema,table_name,sum( io_read_requests + io_write_requests ) io FROMschema_table_statistics GROUP BYtable_schema,table_name ORDER BYio DESC LIMIT 10;
3、冗余索引与未使用索引
--冗余索引查看 select table_schema,table_name,redundant_index_name,redundant_index_columns,dominant_index_name,dominant_index_columns from sys.schema_redundant_indexes; --未使用索引查看 select * from sys.schema_unused_indexes;