mysql对应systables_mysql5.7中的sys表详解(转)

在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:

MySQL4.1 提供了information_schema 数据字典。从此可以很简单的用SQL语句来检索需要的系统元数据了。

MySQL5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。

MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。

sys系统数据库结合了information_schema和performance_schema的相关数据,让我们更加容易的检索元数据。 现在呢,我就示范下几种场景下如何快速的使用。

mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息

这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助

这个库在mysql5.7中是默认存在的,在mysql5.6版本以上可以手动导入,数据库包请在github自行查找。

sys系统数据库结合了information_schema和performance_schema的相关数据,让我们更加容易的检索元数据。 现在呢,我就示范下几种场景下如何快速的使用。

第一,

比如之前想要知道某个表是否存在与否,可以用以下两种方法:

A, 悲观的方法,写SQL从information_schema中拿信息:

SELECT IF(COUNT(*) = 0,'Not exists!','Exists!') AS 'result' FROM information_schema.tables WHERE table_schema = 'new_feature' AND table_name = 't1';

result

-------------

Not exists!

B、乐观的方法,假设表存在,写一个存储过程: (太麻烦了)

现在只需要使用:

SELECT IF(@v_is_exists = '','Not exists!',@v_is_exists) AS 'result';

result

-------------

Not exists!

第二、获取没有使用的索引  SELECT * FROM schema_unused_indexes;

第三, 检索指定数据库下面的表扫描信息,过滤出执行次数大于10的查询,

SELECT * FROM statement_analysis WHERE db='new_feature' AND full_scan = '*'  AND exec_count > 10

SELECT * FROM statement_analysis WHERE db='new_feature' AND tmp_tables > 0 ORDER BY tmp_tables DESC LIMIT

第五, 检索执行次数排名前五的语句

SELECT statement,tot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值