前言:

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



其实我们经常用到的是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. 1,查看每个客户端IP过来的连接消耗了多少资源。
  2. mysql> select * from host_summary;
  3.  
  4. 2,查看某个数据文件上发生了多少IO请求。
  5. mysql> select * from io_global_by_file_by_bytes;
  6.  
  7. 3,查看每个用户消耗了多少资源。
  8. mysql> select * from user_summary;
  9.  
  10. 4,查看总共分配了多少内存。
  11. mysql> select * from memory_global_total;
  12.  
  13. 5,数据库连接来自哪里,以及这些连接对数据库的请求情况是怎样的?
  14. 查看当前连接情况。
  15. mysql> select host, current_connections, statements from host_summary;
  16.  
  17. 6,查看当前正在执行的SQL和执行show full processlist的效果相当。
  18. mysql> select conn_id, user, current_statement, last_statement from session;
  19.  
  20. 7,数据库中哪些SQL被频繁执行?
  21. 执行下面命令查询TOP 10最热SQL
  22. mysql> select db,exec_count,query from statement_analysis order by exec_count desc limit 10;
  23.  
  24. 8,哪个文件产生了最多的IO,读多,还是写的多?
  25. mysql> select * from io_global_by_file_by_bytes limit 10;
  26.  
  27. 9,哪个表上的IO请求最多?
  28. mysql> select * from io_global_by_file_by_bytes where file like ‘%ibd order by total desc limit 10;
  29.  
  30. 10,哪个表被访问的最多?先访问statement_analysis,根据热门SQL排序找到相应的数据表。
  31. mysql> select * from statement_analysis order by avg_latency desc limit 10;
  32.  
  33. 11,哪些SQL执行了全表扫描或执行了排序操作?
  34. mysql> select * from statements_with_sorting;
  35. mysql> select * from statements_with_full_table_scans;
  36.  
  37. 12,哪些SQL语句使用了临时表,又有哪些用到了磁盘临时表?
  38. 查看statement_analysis中哪个SQLtmp_tables tmp_disk_tables值大于0即可。
  39. 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;
  40.  
  41. 13,哪个表占用了最多的buffer pool
  42. mysql> select * from innodb_buffer_stats_by_table order by allocated desc limit 10;
  43.  
  44. 14,每个库(database)占用多少buffer pool
  45. mysql> select * from innodb_buffer_stats_by_schema order by allocated desc limit 10;
  46.  
  47. 15,每个连接分配多少内存?
  48. 利用session表和memory_by_thread_by_current_bytes分配表进行关联查询。
  49. 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;
  50.  
  51. 16,MySQL自增长字段的最大值和当前已经使用到的值?
  52. mysql> select * from schema_auto_increment_columns;
  53.  
  54. 17,MySQL有哪些冗余索引和无用索引?
  55. mysql> select * from schema_redundant_indexes;
  56. mysql> select * from schema_unused_indexes;
  57.  
  58. 18,查看事务等待情况
  59. mysql> select * from innodb_lock_waits

总结:

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

============================================

原文地址:https://www.cnblogs.com/kunjian/p/11653853.html

【mysql】Mysql5.7--sys_schema视图的更多相关文章

  1. 知识点:Mysql 基本用法之视图

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时 ...

  2. mysql 锁相关的视图(未整理)

    mysql 锁相关的视图 查看事务,以及事务对应的线程ID   如果发生堵塞.死锁等可以执行kill  线程ID  杀死线程      kill  199 SELECT * FROM informat ...

  3. MySQL/MariaDB数据库的视图(VIEW)

     MySQL/MariaDB数据库的视图(VIEW) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.视图概述 1>.什么是视图 视图就是一个虚拟的表,保存有实表的查询结果 ...

  4. win10 64 位安装 MySQL(mysql-5.7.17-winx64)

    版权声明:本文为搜集借鉴各类文章的原创文章,转载请注明出处:http://www.cnblogs.com/2186009311CFF/p/6517470.html. win10 64 位安装 MySQ ...

  5. 在window上安装mysql - MySQL5.7.24 版本

    1.下载安装包 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 点击Download,选择 No thanks, just ...

  6. MySQL学习笔记之视图

    视图是对磁盘上保存的表数据的抽象,即抽取一个表或多个表的部分行或列的数据,展示给使用者. 首先列举下MySQL中最简单的对视图操作的语法: 1.创建视图: create view 视图名 as sel ...

  7. mysql优化---订单查询优化:视图优化+索引创建

    订单的表结构采用了垂直分表的策略,将订单相关的不同模块的字段维护在不同表中 在订单处理这个页面,需要查询各种维度, 因此为了方便查询创建了v_sale_order视图(老版本) drop view v ...

  8. MySQL使用Union创建视图报错

    mysql> select * from test_main; +----+-------+ | id | value | +----+-------+ |  1 | ONE   | |  2  ...

  9. mysql基础三(视图、触发器、函数、存储过程、事务、防注入)

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 1.创建视图 -格式:CREATE ...

  10. 成功安装mysql(mysql-5.5.32-winx64.msi)后,为何服务管理器里找不到MYSQL服务名?

    解决方案: 1.打开cmd,切换到mysql的bin目录下 2. D:\Program Files\MySQL5.1\bin>mysqld.exe -install 成功后会出现:Service ...

随机推荐

  1. MyBatis PropertyTokenizer

    PropertyTokenizer package org.apache.ibatis.reflection.property; import java.util.Iterator; /* 例1: 参 ...

  2. 这几个 Chrome 的 Tab 增强插件你都用上了吗?

    1.OneTab:将无数 Tab 合并在一个页面 很多时候我们在一个窗口打开太多的tab,每一个tab太小不容易管理,这时候使用OneTab能够把所有tab收起放在一个页面,点击就可打开该tab,非常 ...

  3. Xcode 中配置 clang-format 格式化 C++ 代码

    Xcode 自带的代码格式化功能(control + I)很有限,其 "格式化" 仅限于设置缩进,代码里面的格式是不会处理的.所以需要借助额外的工具来完成代码的美化. clang- ...

  4. ES6-字符串模板

    es6字符串模板 // es5 let ananiah = "大诶呀"; let blog = "我要忘了你的样子"+ ananiah; console.log ...

  5. 自己用到的解决Python3.6.5+Django2.0集成xadmin后台点击添加或者内容详情报 list index out of range 的错误的办法如下:

    Python3.6.5 Django2.0 这是Django版本与xadmin兼容的问题 解决办法如下: 注释掉如下代码: def render(self, name, value, attrs=No ...

  6. Ubuntu下doxygen+graphviz使用概录

    关键词:doxygen.Doxyfile.doxywizard.dot.graphviz等等. 使用doxygen从源码注释生成帮助文档或者SDK,输出格式有多种比如htmp.Latex等等. 如果想 ...

  7. Gaussian field consensus论文解读及MATLAB实现

    Gaussian field consensus论文解读及MATLAB实现 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.Introduction ...

  8. MySQL 的 4 种隔离级别,你了解么?

    1.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做.事务的结束 ...

  9. 模版引擎Handlebars和Mustache

    Handlebars是一款很高效的模版引擎,提供语意化的模版语句,最大的兼容Mustache模版引擎, 提供最大的Mustache模版引擎兼容, 无需学习新语法即可使用; 下面这个是基本的模版表达式, ...

  10. 元数据MetaData(五)

    JDBC的元数据接口有: DatabaseMetaData数据库级 ResultSetMetaData结果集级 一.DatabaseMetaData 在对数据源进行连接以后,得到一个Connectio ...