mysql 案例 ~ processlist 案例汇总

Posted danhuangpai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 案例 ~ processlist 案例汇总相关的知识,希望对你有一定的参考价值。


1 mysql通过show processlist 大量处于open /close table阶段

    分析 open/close table基本是与table_cache有关,mysql相关的参数大概有2个

             table_open_cache 表缓存个数,与数量有关

             table_open_cache_instances 涉及缓存表缓存的锁争用

    解决方式 1 降低查询本身频率 2 优化慢sql 3 设置读写分离 4 调整以上两个数值

2 mysql在执行truncate时候,大量表处于open/close状态,但是一旦truncate完成,这种状态就会消失

    分析 这种案例和上面的案例有些相似,却又不同.八怪大神经过pt-stack跟踪源码问题,定位到了是AHI导致的可能BUG问题 

    解决方式 关闭 自适应HASH索引 

    补充: 1 上面也有一个因为AHI导致的BUG问题

            2 是否选择关闭AHI,要看关闭前后的程序效率对比,如果大量下降,请不要关闭.如果没什么影响,则建议关闭

3 query end的堆积

    描述 show processlist 发现大量处于query end的事务线程,导致线程堆积

    分析 大量query end主要是由于flush log刷新阻塞导致的,(可能由大事务引起的)

    解决办法 1 定位大事务进行解决优化

    补充 处于query状态的几种情况

         1  磁盘已满,无法刷新LOG

          2 高并发高负载刷新LOG阻塞

  总结 基本都是由于事物二阶段提交不能高速进行导致的,出现这种状态要注意,补充下, select语句也有query end

4 waiting for meta lock的堆积
  描述 会话阻塞,发现大量处于 等待元数据锁的会话
  分析 是由于有事务把持MDL锁导致的
  解决办法 查找把握元数据锁的元凶,我的另一篇文章有介绍,请自行搜索

5 unauthenticated user的 大量出现

  描述  会话出现大量的未验证用户

  解决办法 1 增加skip-name-reslove

                  2 增加mysql back_log值

以上是关于mysql 案例 ~ processlist 案例汇总的主要内容,如果未能解决你的问题,请参考以下文章

mysql 的show processlist和show full processlist区别

MySQL中 show processlist 和 show full processlist命令详解

MySQL中 show processlist 和 show full processlist命令详解

mysql慢SQL排查之show processlist和show full processlist

MySQL processlist中需要关注的状态

在 MySQL 命令中显示 PROCESSLIST:sleep