返回顶部
首页 > 资讯 > 数据库 >带你认识MySQL sys schema
  • 586
分享到

带你认识MySQL sys schema

2024-04-02 19:04:59 586人浏览 安东尼
摘要

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

前言: 

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

您可能感兴趣的文档:

--结束END--

本文标题: 带你认识MySQL sys schema

本文链接: https://lsjlt.com/news/40412.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 带你认识MySQL sys schema
    前言:  MySQL 5.7中引入了一个新的sys schema,sys是一个MySQL自带的系统库,在安装MySQL 5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库。 sys库里面的表...
    99+
    2024-04-02
  • mysql 5.7中崭新的 mysql sys schema
        mysql 5.7中崭新的 mysql sys schema...
    99+
    2024-04-02
  • 带你重新认识MyBatis的foreach
    目录难记空集合问题解法优雅的解法一种简化<foreach>的设想总结用了MyBatis的同行,应该见过foreach,它一般是这样用的: <select ...
    99+
    2022-11-13
    MyBatis的foreach MyBatis foreach
  • 好程序员带你认识“jQuery”
      好程序员带你认识“jQuery”,jQuery是JavaScript的一个类库,$符号它对于jQuery他们是等价的,$(""li)找到所有的li。下面,跟着好程序员的脚步,去了解一下它的选择器的一些主要功能。  选...
    99+
    2023-06-03
  • 一文带你认识java中的String类
    目录什么是字符串字符串常见的赋值方法直接赋值法字符串的比较相等字符串常量池字符串常量池的实例字符串的不可变字符串的常见操作字符串的比较字符串的查找字符串替换 split(S...
    99+
    2024-04-02
  • 带你重新认识Java动态代理
    目录什么是动态代理?动态代理的常用两种方式:1.基于接口的动态代理 2.基于类的动态代理 基于子类的动态代理总结:什么是动态代理? 动态代理就是,在程序运行期,创建目标对象的代理对象...
    99+
    2024-04-02
  • 带你一文深入认识Java String类
    目录前言一、认识String1.JDK中的String2.创建字符串的四种方式3.字符串的字面量4.字符串比较相等二、字符串的常量池1.什么是字符串常量池2.手工入池方法三、字符串的...
    99+
    2024-04-02
  • 一篇文章带你初步认识Maven
    目录1、引言  2、常规项目开发存在的问题3、什么是 Maven 4、Maven 的历史5、Maven 的目标6、Maven 的理念总结1、引言   你能搜到这个教程,说明你对 Ma...
    99+
    2024-04-02
  • 好程序员带你认识HTML5中的WebSocket
      好程序员带你认识HTML5中的WebSocket,在HTML5 规范中,我最喜欢的Web技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的...
    99+
    2023-06-03
  • 带你全面认识Java中的异常处理
    目录Java异常处理异常体系的介绍常见运行时异常常见编译时异常补充:自定义异常总结 Java异常处理 异常体系的介绍 什么事异常处理 异常是程序在“编译&rdq...
    99+
    2022-12-26
    java中异常处理的机制 java中怎么处理异常 JAVA中异常处理的定义
  • 带你认识,19个学习Python的小技巧!
    如果你之前是一个c,c++,java的程序员,同时在学习python,或者干脆就是一个刚刚学习编程的新手,那么你应该会看到很多特别有用能让你感到惊奇的实用技巧。每一个技巧和语言用法都会在一个个实例中展示给大家,也不需要有其他的说明。但是因为...
    99+
    2023-06-02
  • MySQL 5.7中新增sys schema后,会有什么变化
    MySQL 5.7中引入了一个新的sys schema,sys是一个MySQL自带的系统库,在安装MySQL 5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库, sys库里面的表、视图...
    99+
    2024-04-02
  • mysql-1:认识mysql
    文章目录 数据库概述什么是数据库什么是关系型数据库 MySQL的概述MySQL是什么MySQL发展历程 SQL的概述什么是SQLSQL发展的简要历史:SQL语言分类 ...
    99+
    2023-10-06
    mysql 数据库
  • 带你涨知识,认识一下打破世界纪录的数据库OceanBase!
    本文来自于公众号:云报 本文作者:涛哥 本期为我们带来分享的嘉宾是 OceanBase总架构师,蚂蚁金服研究员  杨传辉(日照) 先生,本次嘉年华上,杨...
    99+
    2024-04-02
  • 一文带你认识python源文件中的字符编码
    今天就跟大家聊聊有关一文带你认识python源文件中的字符编码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动...
    99+
    2023-06-06
  • 一文带你认识Java中的Object类和深浅拷贝
    目录前言一.初识Object类1.Object类接收所有子类实例2.Object类部分方法介绍①.Object内的toString方法②.Object内的equals和hashCod...
    99+
    2023-05-17
    java深浅拷贝 java中object类型 java 深拷贝和浅拷贝
  • 认识 mysql 命令
    文章目录 1.简介2.选项3.子命令4.小结参考文献 1.简介 mysql 是 MySQL 的命令行客户端,用于连接到 MySQL 服务器并执行 SQL 语句。 它支持交互式和非交互式两种...
    99+
    2023-09-04
    mysql
  • 一文带你吃透Python中的os和sys模块
    目录一、os模块1、获取当前的工作路径2、os.path模块二、sys模块1、查看 sys模块2、获取参数列表3、退出当前程序4、标准输入输出5、返回 Python 解释器所在路径。...
    99+
    2023-02-23
    Python os sys模块使用 Python os sys模块 Python os sys
  • 按 user 分组统计视图|全方位认识 sys 系统库
    在上一篇 《按 host 分组统计视图|全方位认识 sys 系统库》 中,我们介绍了sys 系统库中按 host 分组统计的视图,类似地,本期的内容将为大家介绍按照 user 进行分类统计的视图。下...
    99+
    2024-04-02
  • 一篇文章带你了解python标准库--sys模块
    目录sys部分常用函数1.sys.path函数用于获取模块文件搜索路径的字符串列表,或临时指定新的搜索路径2.sys.platform为操作系统标识符判断函数3.getwindows...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作