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阻塞 (大事务)

          3 load data file(大事务)

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

          2 本人暂时没有模拟出相应场景问题,高并发情况下并不一定出现,如果有能模拟出的可以联系我 

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

5 unauthenticated user的 大量出现

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

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

                  2 增加mysql back_log值

转载于:https://www.cnblogs.com/danhuangpai/p/11572033.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值