看到一篇对 MySQL sys 库深度使用的文章,觉得很有用,推荐一下。
转自老叶茶馆的文章,如觉得不错,可以关注一下,谢谢。
MySQL5.7的新特性中,非常突出的特性之一就是sys库,不仅可以通过sys库完成MySQL信息的收集,还可以用来监控和排查问题。
但你知道吗,sys库其实还有很多种玩法,有的或许单看表名就知道了,但有一些,还是需要老司机带路哦~
一.用户、连接类
-
查看每个客户端IP过来的连接消耗资源情况。
2、查看每个用户消耗资源情况
3、查看当前连接情况(有多少连接就应该有多少行)
4、查看当前正在执行的SQL和执行show full processlist的效果相当。
二.SQL 和io类
1、查看发生IO请求前三名的文件。
三、buffer pool 、内存
1、查看总共分配了多少内存。
2、每个库(database)占用多少buffer pool
3、统计innodb 引擎的 innodb缓存
pages是指在buffer pool中的page数量;pages_old指在LRU 列表中处于后37%位置的page。
当出现buffer page不够用时,就会征用这些page所占的空间。37%是默认位置,具体可以自定义。
4、统计每张表具体在InnoDB中具体的情况,比如占多少页?
其实和第3例的pages的总数都是相等的,你可以借用sum(pages)运算验证一下哦!
5、查询每个连接分配了多少内存(我这台没什么业务,所以有点不堪),利用session表和memory_by_thread_by_current_bytes分配表进行关联查询。
四、字段、索引、锁
1、查看表自增字段最大值和当前值,有时候做数据增长的监控,可以作为参考,你使用时,不一定要加条件语句。
2、MySQL索引使用情况统计
3、MySQL中有哪些冗余索引和无用索引
若库中展示没有冗余索引,则没有数据;当有联合索引idx_abc(a,b,c)和idx_a(a),那么idx_a就算冗余索引了。
4、查看INNODB 锁信息
在未来的版本将被移除,可以采用其他方式
5、查看库级别的锁信息,这个需要先打开MDL锁的监控:
五.线程类
1、MySQL内部有多个线程在运行,线程类型及数量。