mysql中的sys数据库_MySQL SYS数据库说明

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;

你可能感兴趣的:(mysql中的sys数据库)