码迷,mamicode.com
首页 > 数据库 > 详细

mysql 案例 ~ processlist 案例汇总

时间:2019-09-23 15:30:27      阅读:114      评论:0      收藏:0      [点我收藏+]

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


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   

原文地址:https://www.cnblogs.com/danhuangpai/p/11572033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!