MySQL学习系列


系统库简介

以下系统库的介绍, 主要是扩展大家的知识面, 因为系统库中的数据很重要,没有对 MySQL 有全面通盘的了解, 不宜去操作其下的数据, 而且对系统库的管理维护是是 DBA 的职责。

MySQL 有几个系统数据库, 这几个数据库包含了 MySQL 服务器运行过程中所需的一些信息以及一些运行状态信息, 我们现在稍微了解一下。

  • performance_schema

这个数据库里主要保存 MySQL 服务器运行过程中的一些状态信息, 算是对MySQL 服务器的一个性能监控。 包括统计最近执行了哪些语句, 在执行过程的每个阶段都花费了多长时间, 内存的使用情况等等信息。

这个数据库主要是通过视图的形式把 information_schema 和performance_schema 结合起来, 让程序员可以更方便的了解 MySQL 服务器的一些性能信息。

  • information_schema

这个数据库保存着 MySQL 服务器维护的所有其他数据库的信息, 比如有哪些表、 哪些视图、 哪些触发器、 哪些列、 哪些索引。 这些信息并不是真实的用户数据, 而是一些描述性信息, 有时候也称之为元数据。

  • mysql

这个数据库核心, 它存储了 MySQL 的用户账户和权限信息, 一些存储过程、事件的定义信息, 一些运行过程中产生的日志信息, 一些帮助信息以及时区信息等。

sys 系统库

1. sys 使用须知

sys 系统库通常都是提供给专业的 DBA 人员排查一些特定问题使用的, 其下所涉及的各项查询或多或少都会对性能有一定的影响。 所以这个库的配置、 触发器等等我们都不做学习。同时在使用上:sys 系统库支持 MySQL 5.6 或更高版本, 不支持 MySQL 5.5.x 及以下版本。因为 sys 系统库提供了一些代替直接访问 performance_schema 的视图, 所以必须启用 performance_schema(将 performance_schema 系统参数设置为 ON) ,sys 系统库的大部分功能才能正常使用。同时要完全访问 sys 系统库, 用户必须具有以下数据库的管理员权限。如果要充分使用 sys 系统库的功能, 则必须启用某些 performance_schema的功能。 当然 sys 系统库本身已经提供了启用所有需要的功能的存储过程,

比如:启用所有的 wait instruments:

CALL sys.ps_setup_enable_instrument('wait');

启用所有事件类型的 current 表:

CALL sys.ps_setup_enable_consumer('current');

注意: performance_schema 的默认配置就可以满足 sys 系统库的大部分数据收集功能。 启用所有需要功能会对性能产生一定的影响, 因此最好仅启用所需的配置

2. sys 系统库使用

如果使用了 USE 语句切换默认数据库, 那么就可以直接使用 sys 系统库下的视图进行查询, 就像查询某个库下的表一样操作。 也可以使用 db_name.view_name、db_name.procedure_name、 db_name.func_name 等方式, 在不指定默认数据库的情况下访问 sys 系统库中的对象(这叫作名称限定对象引用) 。

在 sys 系统库下包含很多视图, 它们以各种方式对 performance_schema 表进行聚合计算展示。 这些视图大部分是成对出现的, 两个视图名称相同, 但有一个视图是带“x$”前缀的, 例如: host_summary_by_file_io 和x$host_summary_by_file_io, 代表按照主机进行汇总统计的文件 I/O 性能数据,两个视图访问的数据源是相同的, 但是在创建视图的语句中, 不带“x$”前缀的视图显示的是相关数值经过单位换算后的数据(单位是毫秒、 秒、 分钟、 小时、天等) , 带“x$”前缀的视图显示的是原始的数据(单位是皮秒) 。

查看慢 SQL 语句慢在哪里

如果我们频繁地在慢查询日志中发现某个语句执行缓慢, 且在表结构、 索引结构、 统计信息中都无法找出原因时, 则可以利用 sys 系统库中的杀手锏:sys.session 视图结合 performance_schema 的等待事件来找出症结所在。 那么session 视图有什么用呢? 使用它可以查看当前用户会话的进程列表信息, 看看当前进程到底再干什么, 注意, 这个视图在 MySQL 5.7.9 中才出现。

首先需要启用与等待事件相关功能:

call sys.ps_setup_enable_instrument('wait');
call sys.ps_setup_enable_consumer('wait');


另一个会话中模拟

select sleep(30);

SELECT * FROM session WHERE command = 'query' AND conn_id != CONNECTION_ID()\G
mysql> SELECT * FROM session WHERE command = 'query' AND conn_id != CONNECTION_ID()\G
*************************** 1. row ***************************thd_id: 43conn_id: 18user: root@localhostdb: performance_schemacommand: Querystate: User sleeptime: 3current_statement: select sleep(30)statement_latency: 2.72 sprogress: NULLlock_latency: 0 psrows_examined: 0rows_sent: 0rows_affected: 0tmp_tables: 0tmp_disk_tables: 0full_scan: NOlast_statement: NULL
last_statement_latency: NULLcurrent_memory: 0 byteslast_wait: wait/synch/cond/sql/Item_func_sleep::condlast_wait_latency: Still Waitingsource:trx_latency: NULLtrx_state: NULLtrx_autocommit: NULLpid: 303program_name: mysql
1 row in set (0.05 sec)

查询表的增、 删、 改、 查数据量和 I/O 耗时统计

select * from schema_table_statistics_with_buffer\G


除此之外, 通过 sys 还可以查询查看 InnoDB 缓冲池中的热点数据、 查看是否有事务锁等待、 查看未使用的, 冗余索引、 查看哪些语句使用了全表扫描等等。

MySQL 中的系统库之sys 系统库相关推荐

  1. mysqldump单个库导出_初相识 | 全方位认识 sys 系统库

    前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...

  2. 初相识 | 全方位认识 sys 系统库

    前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...

  3. 【MySQL】sys系统库配置表

    文章目录 一.sys_config表 1.sys_config表的结构 2.用户自定义配置选项变量 3.sys_config表中配置选项简析 二.sys_config_insert_set_user触 ...

  4. MySQL——O2. MySQL 中的系统库

    performance_schema 这个数据库里主要保存 MySQL 服务器运行过程中的一些状态信息,是对 MySQL 服务器的一个性能监控.包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了 ...

  5. MySQL系统库之sys

    sys这个数据库主要是通过视图的形式把information_schema和 performance_schema结合起来,让程序员可以更方便的了解MySQL服务器的一 些性能信息. sys系统库通常 ...

  6. 等待事件统计视图 | 全方位认识 sys 系统库

    在上一篇<内存分配统计视图 | 全方位认识 sys 系统库>中,我们介绍了sys 系统库如何查询内存事件统计信息和buffer pool统计信息,本期的内容先给大家介绍按照等待事件统计相关 ...

  7. sys 系统库 笔记(一)—— 简介与快速入门

    系列文章参考自<MySQL 性能优化金字塔法则>,删除了书里重复说明和过于复杂的一些解释,完整版请参考原书. 前面一系列笔记介绍了performance_schema系统库,把它放在最前面 ...

  8. mysql中拼接用什么_MySQL中常用的拼接语句的小结(代码示例)

    本篇文章给大家带来的内容是关于MySQL中常用的拼接语句的小结(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言:在MySQL中 CONCAT ()函数用于将多个字符串 ...

  9. mysql中日志的特点_mysqlbinlog的日志类型

    一.mysqlbinlog简介 binlog又叫二进制日志文件,它会将mysql中所有修改数据库数据的Query以二进制的形式记录到日志文件中,如:create,insert,drop,update等 ...

最新文章

  1. 你的简历到底问题在哪?
  2. 从零搭建一套结构光3D重建系统[理论+源码+实践]
  3. 统一建模语言UML整理之开篇
  4. 启明云端分享| 图文+实操+视频,手把手教你Eclipse搭建esp-idf环境
  5. 10 个理由让你继续干 IT
  6. 2020年前端最火的技术是什么?
  7. 自编码器图像去噪matlab,深度有趣 | 05 自编码器图像去噪
  8. 【数据结构笔记42】哈希表应用:文件中单词词频统计
  9. 数学知识点回顾(二)
  10. JS将16进制颜色转为rgba格式
  11. 地平线谭洪贺:AI芯片怎么降功耗?从ISSCC2017说起
  12. python做meta分析_浅析python的metaclass
  13. 最近服务器总被webshell攻击,木马也非常猖獗
  14. 如何使用Python实现一个pdf阅读器?
  15. python表格绘制斜线表头_Excel技巧—轻松搞定各种表头
  16. xp系统怎么关闭wmi服务器,WinXP系统如何启用WMI服务,小编教你WinXP系统如何启用WMI服务...
  17. 深度解析C/C++中的宏是什么?有什么作用呢?
  18. segmentation fault
  19. shineblink BH1750光照强度传感器
  20. redux与flux

热门文章

  1. 机器学习 实验三 手写汉字识别
  2. 感悟 - 研发团队需具备的共同理念
  3. 手机点餐系统概述_实训答辩安卓点餐系统ppt课件
  4. 如何写一份详细的创业项目策划书
  5. 解题:THUWC 2017 在美妙的数学王国中畅游
  6. 基于物联网的血压计设计
  7. 三维场景渲染之天空体生成
  8. discuz mysql类_Discuz论坛教程之数据库操作DB类和C::t类介绍
  9. Linux中搭建静态网站(练习题)
  10. springboot 进阶