我的编程空间,编程开发者的网络收藏夹
学习永远不晚

带你认识MySQL sys schema

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

带你认识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个,如下图所示:


带你认识MySQL sys schema
带你认识MySQL sys schema

其实我们经常用到的是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

带你认识MySQL sys schema

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

带你认识MySQL sys schema

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

带你认识思科证书

  思科认证是由网络领域著名的厂商--Cisco公司推出的。是互联网领域的国际权威认证。在这篇教程里面,小编会为大家简单的介绍一下:带你认识思科证书。  一、关于思科认证的协议  首先小编先和大家介绍一下思科认证相关的协议吧,大家在注册时,Cisco职业认证跟踪体系就会让大家自动的接受体系里面所有的条款。  当我们登陆
带你认识思科证书
2024-04-17

带你重新认识MyBatis的foreach

这篇文章主要介绍了重新认识MyBatis的foreach,本文提出了一种简化<foreach>写法的设想,更重要的是通过解决空集时生成的SQL语法问题,更深刻地理解MyBatis的foreach的生成机制,需要的朋友可以参考下
2022-11-13

带你认识无线城域网

  今天小编给大家带来的教程是:带你认识无线城域网。不知道各位朋友是否有了解过这方面的知识呢?如果没有,那就跟着小编一起来学习一下吧。  一、无线城域网  IEEE802.16工作组曾经提出的无线接入系统空中接口标准实际上就是一种无线城域网技术,那么什么叫做无线城域网呢?其实,无线城域网的推出是为了满足日益增长的宽带无
带你认识无线城域网
2024-04-17

好程序员带你认识“jQuery”

  好程序员带你认识“jQuery”,jQuery是JavaScript的一个类库,$符号它对于jQuery他们是等价的,$(""li)找到所有的li。下面,跟着好程序员的脚步,去了解一下它的选择器的一些主要功能。  选择器:基本选择器、层
2023-06-03

一文带你全面认识 Kubernetes!

在 Kubernetes 中,用户可以将应用程序打包成独立的、轻量级的容器,并利用 Kubernetes 提供的丰富功能,如自动负载均衡、自我修复、自动伸缩等,快速而高效地部署和管理这些容器。

带你认识机房防雷的知识点

  随着通信技术、计算机网络技术的飞速发展,计算机和网络越来越深入人们生活和工作中,同时也预示着数字化、信息化时代的来临。这些微电子网络设备的普遍应用,使得防雷的问题显得越来越重要。今天小编要给大家分享一篇教程,那就是:带你认识机房防雷的知识点。  一、雷击的种类  首先小编要为大家介绍的是雷击的种类,电力线是雷电侵入
带你认识机房防雷的知识点
2024-04-18

带你认识Cisco售前工程师认证——CCDA

  售前人员应该是项目开发人员与业务销售人员的桥梁,售前这个职务,一般是公司开发项目的技术人员,也有一些技术背景比较深的销售人员。今天小编要为大家带来的教程是:带你认识Cisco售前工程师认证——CCDA。  一、简介CCDA  首先小编先为大家简单的介绍一下CCDA认证吧,大家对它的了解知道多
带你认识Cisco售前工程师认证——CCDA
2024-04-17

带你认识CCNA认证考试升级道路

  据IT认证考试资源网介绍CCNA是Cisco认证证书体系中的初级技术证书。随着社会不断的进步,CCNA认证考试也在不断的升级,那么它的升级之路又是怎样的呢?跟着小编一起来学习:带你认识CCNA认证考试升级道路。  一、升级之路  CCNA认证考试自从设立到现在,这一个考试项目已经经历过很多次的升级了。最早是从199
带你认识CCNA认证考试升级道路
2024-04-18

带你初步认识网页中的DIV

编程学习网:网页设计中常用的一些标签是必须要掌握的,但是有很多的标签元素理解起来并不是特别的容易,也是让人很容易混淆,刚开始学习网页设计的朋友可能会感觉到并不是好理解,因为太专业的解释往往让人很难理解,下面一起来学习了解一下。
带你初步认识网页中的DIV
2024-04-23

带你认识思科路由器的端口

  Cisco路由器是一个具备用于连接不同网络设备的综合服务多种功能的集成多业务路由器。思科路由器端口是路由器网络设备里面一定需要涉及到的知识,思科路由器端口管理以及合理的最大化应用都将使得我们继续为这一个知识进行研究。今天小编给大家带来的教程是:带你认识思科路由器的端口。  大家都应该知道其实思科路由器端口是辅助管理
带你认识思科路由器的端口
2024-04-17

带你认识CSS3中新的长度单位

编程学习网:众所周知,在编写css过程中,我们通常要为元素的位置、尺寸精确地定义一些值。因为一个排列无序、杂乱无章的页面不可能给别人留下什么好的印象。而这时,我们就离不开长度单位的帮忙了。随着CSS的不断发展,在CSS3中引入了几个新的长度单位,今天小编就带大家一起认识它们。
带你认识CSS3中新的长度单位
2024-04-23

好程序员带你认识HTML5中的WebSocket

  好程序员带你认识HTML5中的WebSocket,在HTML5 规范中,我最喜欢的Web技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的
2023-06-03

带你认识VLAN的六种划分原则

  虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。在这一篇教程里面,小编主要和大家简单的介绍一下:带你认识VLAN的六种划分原则。  第一种原则:基于MAC地址划分VLAN
带你认识VLAN的六种划分原则
2024-04-18

带你认识HTTP协议的通用头域

  超文本传输协议(HTTP,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收html页面的方法。现在就跟着小编共同来学习一下:带你认识HTTP协议的通用头域。  无论你何时浏览一个网页,你的电脑
带你认识HTTP协议的通用头域
2024-04-18

带你认识Pulsar负载均衡利器Bundle

Pulsar是一款非常优秀的消息流平台,这篇文章主要讲Pulsar中Topic通过Bundle这个负载均衡利器在Broker中的分配。

编程热搜

目录