千家信息网

带你认识MySQL sys schema

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,前言:MySQL 5.7中引入了一个新的sys schema,sys是一个MySQL自带的系统库,在安装MySQL 5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库。sys库里面的表
千家信息网最后更新 2025年11月11日带你认识MySQL sys schema

前言:

MySQL 5.7中引入了一个新的sys schema,sys是一个MySQL自带的系统库,在安装MySQL 5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库。

sys库里面的表、视图、函数、存储过程可以使我们更方便、快捷的了解到MySQL的一些信息,比如哪些语句使用了临时表、哪个SQL没有使用索引、哪个schema中有冗余索引、查找使用全表扫描的SQL、查找用户占用的IO等,sys库里这些视图中的数据,大多是从performance_schema里面获得的。目标是把performance_schema的复杂度降低,让我们更快的了解DB的运行情况。

1.sys库总览

本篇文章是基于MySQL 5.7.23版本实验的。打开sys库(希望你跟着我一起做哦),我们会发现sys schema里包含1个表,100个视图,存储过程及函数共48个,如下图所示:

cdn.nlark.com/yuque/0/2019/png/119537/1569308615078-35b82427-93e5-4abe-b1e9-8c832f7faabc.png">

其实我们经常用到的是sys schema下的视图,下面将主要介绍各个视图的作用,我们发现sys schema里的视图主要分为两类,一类是正常以字母开头的,共52个,一类是以 x$ 开头的,共48个。字母开头的视图显示的是格式化数据,更易读,而 x$ 开头的视图适合工具采集数据,显示的是原始未处理过的数据。

下面我们将按类别来分析以字母开头的52个视图:

  • host_summary:这个是服务器层面的,以IP分组,比如里面的视图host_summary_by_file_io;
  • user_summary:这个是用户层级的,以用户分组,比如里面的视图user_summary_by_file_io;
  • innodb:这个是InnoDB层面的,比如视图innodb_buffer_stats_by_schema;
  • io:这个是I/O层的统计,比如视图io_global_by_file_by_bytes;
  • memory:关于内存的使用情况,比如视图memory_by_host_by_current_bytes;
  • schema:关于schema级别的统计信息,比如schema_table_lock_waits;
  • session:关于会话级别的,这类视图少一些,只有session和session_ssl_status;
  • statement:关于语句级别的,比如statements_with_errors_or_warnings;
  • wait:关于等待的,比如视图waits_by_host_by_latency。
2.常用查询介绍

1,查看每个客户端IP过来的连接消耗了多少资源。
mysql> select * from host_summary;

2,查看某个数据文件上发生了多少IO请求。
mysql> select * from io_global_by_file_by_bytes;

3,查看每个用户消耗了多少资源。
mysql> select * from user_summary;

4,查看总共分配了多少内存。
mysql> select * from memory_global_total;

5,数据库连接来自哪里,以及这些连接对数据库的请求情况是怎样的?
查看当前连接情况。
mysql> select host, current_connections, statements from host_summary;

6,查看当前正在执行的SQL和执行show full processlist的效果相当。
mysql> select conn_id, user, current_statement, last_statement from session;

7,数据库中哪些SQL被频繁执行?
执行下面命令查询TOP 10最热SQL。
mysql> select db,exec_count,query from statement_analysis order by exec_count desc limit 10;

8,哪个文件产生了最多的IO,读多,还是写的多?
mysql> select * from io_global_by_file_by_bytes limit 10;

9,哪个表上的IO请求最多?
mysql> select * from io_global_by_file_by_bytes where file like '%ibd' order by total desc limit 10;

10,哪个表被访问的最多?先访问statement_analysis,根据热门SQL排序找到相应的数据表。
mysql> select * from statement_analysis order by avg_latency desc limit 10;

11,哪些SQL执行了全表扫描或执行了排序操作?
mysql> select from statements_with_sorting;
mysql> select
from statements_with_full_table_scans;

12,哪些SQL语句使用了临时表,又有哪些用到了磁盘临时表?
查看statement_analysis中哪个SQL的tmp_tables 、tmp_disk_tables值大于0即可。
mysql> select db, query, tmp_tables, tmp_disk_tables from statement_analysis where tmp_tables>0 or tmp_disk_tables >0 order by (tmp_tables+tmp_disk_tables) desc limit 20;

13,哪个表占用了最多的buffer pool?
mysql> select * from innodb_buffer_stats_by_table order by allocated desc limit 10;

14,每个库(database)占用多少buffer pool?
mysql> select * from innodb_buffer_stats_by_schema order by allocated desc limit 10;

15,每个连接分配多少内存?
利用session表和memory_by_thread_by_current_bytes分配表进行关联查询。
mysql> select b.user, current_count_used, current_allocated, current_avg_alloc, current_max_alloc, total_allocated,current_statement from memory_by_thread_by_current_bytes a, session b where a.thread_id = b.thd_id;

16,MySQL自增长字段的最大值和当前已经使用到的值?
mysql> select * from schema_auto_increment_columns;

17,MySQL有哪些冗余索引和无用索引?
mysql> select from schema_redundant_indexes;
mysql> select
from schema_unused_indexes;

18,查看事务等待情况
mysql> select * from innodb_lock_waits;

总结:

本文主要介绍sys库相关内容,其实sys库有很多有用的查询,可以帮助你轻松了解数据库的运行情况,原本需要查找performance_schema中多个表才能获得的数据,现在查询一个视图即可满足。当然,sys库需要你详细去了解,总结出你需要的查询方法。

参考资料:

  • https://blog.csdn.net/l1028386804/article/details/89521908

视图 数据 情况 查询 开头 数据库 用户 索引 内存 字母 级别 语句 分配 信息 冗余 函数 层面 文件 版本 资源 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 应用软件开发的价钱 本地数据库怎么用 ios数据库管理 网信普法一图看懂网络安全法 济南市中小学网络安全进校园竞赛 教育网络安全和信息化先进单位 汽车合格证信息多久传到数据库 前端开发和软件开发区别 上海通用软件开发销售价格 软件开发企业会计怎么设置 教资面试小学网络安全试讲 多益网络技术社招有几轮面试 专升本计算机网络技术教学 银行的软件开发岗位有什么用 网络道德与网络安全手抄报 天象网络技术广州有限公司 db2数据库补空格 加上网络安全 五家渠云服务器诚信合作 服务器电源管理系统 软件开发四级英语要过吗 软件开发管理平台 德国 福建省天气预报软件开发 提示数据库版本不对 杭州网络安全公司如何 计算机信息技术与网络安全 仙剑一是用什么软件开发的 宝塔重新安装数据库 数据库可以连接什么网络 登云数据库一体机属于什么设备
0