MySQL SYS数据库说明
此以MySQL5.7说明,实际和8.0区别不大
Sys库所有的数据源来自:performance_schema。
目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况
Sys库下有两类视图
字母开头: 适合人阅读,显示是格式化的数
x$开头 : 适合工具采集数据,原始类数据
视图说明:
host : 以IP分组相关的统计信息
innodb : innodb buffer 相关信息
io : 数据内不同维度展的IO相关的信息
memory : 以IP,连接,用户,分配的类型分组及总的占用显示内存的使用
metrics : DB的内部的统计值
processlist : 线程相关的信息(包含内部线程及用户连接)
ps_ : 没有工具统计的一些变量(没看出来存在的价值)
schema : 表结构相关的信息,例如: 自增,索引, 表里的每个字段类型,等待的锁等等
session : 用户连接相关的信息
statement :基于语句的统计信息(重点)
statements_ :出错的语句,进行全表扫描,运行时间超长,排序相等(重点)
user_ : 和host_开头的相似,只是以用户分组统计
wait : 等待事件,比较专业,难看懂。
waits : 以IP,用户分组统计出来的一些延迟事件,有一定的参考价值。
1、查看主机信息
select host, current_connections,statements from sys.host_summary;
2、执行最多的SQL
select * from sys.statement_analysis order by exec_count desc limit 2 \G
3、查看系统IO最多的文件(可对应到表)
select * from sys.io_global_by_file_by_bytes where file not regexp '@@datadir/sys|@@datadir/mysql|@@datadir/performance_schema|@@datadir/ibdata1|@@basedir/share|@@datadir/auto.cnf|binlog|ibtmp1' order by total desc limit 10;
4、查看访问次数最多的表
select * from sys.statement_analysis order by exec_count desc limit 10 \G
5、查看哪些语句延迟厉害
select * from sys.statement_analysis order by avg_latency desc limit 1 \G
6、查看系统里未使用过的索引
select * from sys.schema_unused_indexes;
7、查看冗余索引
select table_schema,table_name,redundant_index_name,redundant_index_columns,dominant_index_name,dominant_index_columns from sys.schema_redundant_indexes;
8、查看使用磁盘临时表的SQL
select db, query, tmp_tables,tmp_disk_tables from sys.statement_analysis where tmp_tables>0 or tmp_disk_tables >0 order by(tmp_tables+tmp_disk_tables) desc limit 20;
9、查看占用最大buffer pool的表
select * from sys.innodb_buffer_stats_by_table order by pages desc limit 10 \G
10、按schema查看buffer pool占用情况
select * from sys.innodb_buffer_stats_by_schema;
11、查看线程分配内存情况
select b.user, current_count_used,current_allocated, current_avg_alloc, current_max_alloc,total_allocated,current_statement from sys.memory_by_thread_by_current_bytes a,sys.session b where a.thread_id = b.thd_id;
12、查看线程使用情况,包括内部的线程
select user, count(*) from sys.processlist group by user;
13、查看表自增ID使用情况
select * from sys.schema_auto_increment_columns limit 10;