在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:
MySQL4.1 提供了information_schema 数据字典。从此可以很简单的用SQL语句来检索需要的系统元数据了。
MySQL5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。
MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。
sys系统数据库结合了information_schema和performance_schema的相关数据,让我们更加容易的检索元数据。 现在呢,我就示范下几种场景下如何快速的使用。
第一,
比如之前想要知道某个表是否存在与否,可以用以下两种方法:
A, 悲观的方法,写SQL从information_schema中拿信息:
B,乐观的方法,假设表存在,写一个存储过程:
现在来调用:
现在我们直接用sys数据库里面现有的存储过程来进行调用,
第二,获取没有使用过的索引。
第三, 检索指定数据库下面的表扫描信息,过滤出执行次数大于10的查询,
第四, 同样继续上面的,过滤出有临时表的查询,
可以看到上面查询详细的详细,再也不用执行show status 手工去过滤了。
第五, 检索执行次数排名前五的语句,
示例我就写这么多了,详细的去看使用手册并且自己摸索去吧。
本文转自 david_yeung 51CTO博客,原文链接:http://blog.51cto.com/yueliangdao0608/1716616,如需转载请自行联系原作者