当前位置:Gxlcms > 数据库问题 > mysql 案例 ~ processlist 案例汇总

mysql 案例 ~ processlist 案例汇总

时间:2021-07-01 10:21:17 帮助过:16人阅读


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 案例汇总

标签:sql   ESS   proc   有关   love   一个   auth   会话   query end   

人气教程排行