网易这样用sys schema优雅提升MySQL易用性

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

本文详细地介绍了MySQL 5.7新引入的sys schema。首先,本文概要地介绍了sys schema的作用和定位;其次,分别介绍了sys schema中的视图、函数和存储过程;接下来,通过两个例子来演示sys schema的用法,便于大家理解sys schema带来的实实在在的好处;最后讨论了sys schema还可以增加的内容。

 

1 sys schema的介绍 

 

sys schema是MySQL 5.7.7中引入的一个系统库,包含了一系列视图、函数和存储过程, 该项目专注于MySQL的易用性,例如,我们可以通过sys schema快速的知道,哪些语句使用了临时表,哪个用户请求了最多的io,哪个线程占用了最多的内存,哪些索引是无用索引等。

 

引入sys schema以后,MySQL的易用性将会得到极大地提升,MySQL的用户分析问题和定位问题,将更多的依赖sys schema,减少外部工具的使用。

 

前面说过,sys schema中包含了大量的视图(只有sys_config是innodb表),那么,这些视图的信息来自哪里呢?视图中的信息均来自performance schema和information schema中的统计信息。MySQL Server blog中有一个很好的比喻:

 

20160503095103446.png

 

也就是说,performance schema和information schema中提供了信息源,但是,没有很好的将这些信息组织成有用的信息,从而没有很好的发挥它们的作用。而sys schema使用performance schema和information schema中的信息,通过视图的方式给出解决实际问题的答案。这就是sys schema的作用和目的,也是为什么sys schema值得我们花点时间学习的原因。

 

2 sys schema中的视图、函数和存储过程 

 

可以通过以下语句快速查看sys schema包含的视图、函数和存储过程

 

20160503095112365.png

 

接下来将依次给出所有的视图、函数和存储过程,并进行简单的分析,希望能够达到抛砖引玉的效果。

 

2.1 视图

 

sys schema中的视图(和一张表)如下,通过名称就很容易猜到具体是做什么用的。

 

20160503095118462.png

20160503095129901.png

 

这里还没有列出全部的视图,对于每一个视图,都有两种形式:

 

20160503095139869.png

 

前一种是便于人类阅读的形式,格式化了时间单位和字节单位,另外一种形式是指以”x$”开头的视图名称,是为了便于工具处理。如下所示:

 

20160503095147576.png

 

我们再看一下host_summary_by_file_io的定义,如下所示:

 

20160503095154850.png

 

可以看到,定义非常复杂,如果不是sys schema提供了这么好用的视图,我们自己几乎无法从这么多信息中获取到有用的信息。

 

2.2 函数

 

如果你仔细看了上面的定义视图的SQL语句,你可能注意它使用了一个叫做sys.format_time的函数,这个函数也是随着sys schema一起发布,用以格式化时间单位。sys schema还包含了其他一些有用的函数,如下所示:

 

20160503095440760.png

 

2.3 存储过程

 

下面的是sys schema包含的存储过程。可以看到,大部分存储过程都是PS开头的,PS是performance schema的简写,这些存储过程都是用来控制performance schema统计的行为。例如,ps_truncate_all_tables 的作用就是truncate所有performance schema中summary相关的表。

 

如下所示:

 

20160503095449852.png

 

3 sys schema示例 

 

这一节简单的演示sys schema的用法,便于大家理解sys schema带来的实实在在的好处,然后讨论了sys schema还可以增加的内容。

 

3.1 sys schema的用法

 

我们来看几个与索引相关的例子:

 

(1)如何查看数据库中的冗余索引,在MySQL 5.7之前,需要使用percona的 pt-duplicate-key-checker,现在直接查询sys.schema_redundant_indexes就可以了:

 

20160503095458877.png

 

(2)如何获取未使用的索引

 

在MySQL 5.7之前,我们也可以通过information schema查看未使用的索引:

 

20160503095505986.png

 

有了sys schema以后,直接查询schema_unused_indexes即可:

 

20160503095512515.png

 

(3)如何查看使用全表扫描的SQL语句(MySQL 5.7之前我不知道怎么看的额(⊙o⊙)…) 有了sys schema以后,直接查询statements_with_full_table_scans即可:

 

20160503095519150.png

 

3.2 sys schema可以引入的视图

 

我发现,还有一些非常有用的信息,可以通过information schema 和performance schema获取到,但是,在sys schema中却没有。有鉴于此,个人感觉未来sys schema中的视图会继续增加。例如:

 

  • 查看没有主键的表

20160503095527217.png

 

  • 查看是谁创建的临时表

20160503095533238.png

 

  • 没有正确关闭数据库连接的用户

 

20160503095540944.png

 

这些都是比较有用的信息,适合加入到sys schema中。

 

4 总结 

 

本文详细地介绍了sys schema的作用和组成,并通过几个例子演示了sys schema的易用性和不足,相信通过这篇文章,大家对sys schema能够有一个较完整的了解,也愿意花时间去深入了解sys schema中的各个视图。

 

作者介绍  赖明星

  • 网易杭州研究院资深开发工程师,网易RDS项目的核心开发人员;

  • 负责大型数据库实例的云端解决方案的模块设计和功能开发,对关系型数据库和NoSQL数据库具有浓厚的兴趣。


本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2016-05-03

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 关系型数据库 MySQL
【MySQL】MySQL表设计的经验(建议收藏)
【MySQL】MySQL表设计的经验(建议收藏)
661 1
【MySQL】MySQL表设计的经验(建议收藏)
|
6月前
|
JSON 关系型数据库 MySQL
全方位对比 Postgres 和 MySQL (2023 版)
根据 2023 年 Stack Overflow 调研,Postgres 已经取代 MySQL 成为最受敬仰和渴望的数据库。 随着 Postgres 的发展势头愈发强劲,在 Postgres 和 MySQL 之间做选择变得更难了。 如果看安装数量,MySQL 可能仍是全球最大的开源数据库。 Postgres 则自诩为全球最先进的开源关系型数据库。 因为需要与各种数据库及其衍生产品集成,Bytebase 和各种数据库密切合作,而托管 MySQL 和 Postgres 最大的云服务之一 Google Cloud SQL 也是 Bytebase 创始人的杰作之一。 我们对 Postg
200 0
|
存储 关系型数据库 OLAP
在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?
好好用MySQL和PostgreSQL不就行了?为啥阿里要劳神费力地又基于Greenplum的开源版本研发HybridDB方案?HybridDB方案深究之下,有什么技术细节与故事?本文将向您分享阿里与HybridDB的故事。
13842 0
|
关系型数据库 MySQL 数据库管理
|
存储 缓存 关系型数据库

热门文章

最新文章