数据库问题排查模块
一 简介 在平台如何实现针对数据库的问题排查
二 页面设计
1 第一块内容
设计
通过 processlist返回前端
1 过滤了sleep线程和slave dump线程
2 按照time时间倒序进行排序
3 增加了lock关键字过滤
分析
1 通过 time时间定位最耗时的慢sql
2 通过关键字查看是否有MDL锁导致后续请求的阻塞
2 第二块内容
设计
通过 processlist针对数据库DB进行归类统计
分析
1 可能存在这样的情况,不同的业务不同的库都存在一个实例下,这样根据不同DB的连接统计定位业务
3 第三块内容
设计
通过processlist针对数据库总访问数进行归类统计
分析
通过非sleep进程的统计与最大链接数的对比来定位是否是sleep线程导致的连接数耗尽
4 第四块内容
设计
通过 innodb_trx表针对锁持有事务进行统计
分析
1 正在执行的事务,持有的锁,可能导致其他事务的等待,锁设计的不合理
2 长时间未提交的事务,可能导致其他事务的等待
三 总结
1 平台的问题是当连接不上数据库的时候是无法进行分析,这是一点不足(可能出现连接数耗尽的情况)
2 只能捕捉瞬时,不能对之前的问题进行分析,以后会着手解决