收到报警某台mysql数据库慢查询数量超过5,登录上去看,发现阻塞的SQL全部是update,处于Updating状态

+---------+------+-----------+------+---------+------+----------+------------------------------------+
| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |
+---------+------+-----------+------+---------+------+----------+------------------------------------+
| 4364109 | root | localhost | test | Query | 39 | Updating | update T_1 set col3='' where FID=3 |
+---------+------+-----------+------+---------+------+----------+------------------------------------+

查看系统状态,各项都正常,但在InnoDB Row Lock Time值上有个较大的毛刺,基本得出是锁等待导致的。show processlist看到的线程里面,活动状态的没有发现执行慢的SQL,都是通过主键update,极有可能是某个事务对这个表做了dml操作没有提交commit,导致一直持有锁未释放,后面的session等待X锁。根据这个思路,在show engine innodb status的事务栏里面找到ACTIVE状态的,执行时间最长的那个session,发现是sleep状态的,kill掉这个session,阻塞现象消失。

---TRANSACTION 21427F91, ACTIVE 1421 sec, process no 69177, OS thread id 139633152562944
2 lock struct(s), heap size 376, 1 row lock(s), undo log entries 1
MySQL thread id 4364618, query id 282683146 localhost root

至于为什么会出现未提交SQL,再和开发一起去排查

通过show engine innodb status去查session比较麻烦,简单的SQL如下

mysql> select a.trx_mysql_thread_id,b.TIME from information_schema.INNODB_TRX a inner join information_schema.processlist b on a.trx_mysql_thread_id=b.id where a.trx_state='RUNNING' and b.time>10 and b.COMMAND='Sleep';
+---------------------+------+
| trx_mysql_thread_id | TIME |
+---------------------+------+
| 4364618 | 614 |
+---------------------+------+
1 row in set (0.00 sec)

事务ID=4364618,事务时长:614秒。

最新文章

  1. FTP弱口令猜解【python脚本】
  2. JVM 参数分配
  3. ecshop 后台模板设置-》设置模板
  4. Effective C++ 5.实现
  5. JS判断上传图片格式是否正确
  6. jQuery选择器(添加节点及删除节点及克隆及替换及包装)第九节
  7. MapReduce 入门之一步步自实现词频统计功能
  8. Fiddler使用简单介绍
  9. [转帖]批处理-For详解
  10. Windows下文件夹扩展名
  11. BZOJ3585&3339mex——主席树
  12. exec函数族的作用与讲解
  13. [C#][Quartz]添加监听器
  14. C#自定义控件开发
  15. 3、Docker容器管理
  16. [PowerShell Utils] Remotely install Hyper-V and Failover Cluster feature on a list of windows 2012 servers
  17. 区别mouseover与mouseenter?
  18. 使用 shinydashboard
  19. sublime 在Mac终端下设置快捷打开方式
  20. 【bzoj4491】我也不知道题目名字是什么 离线扫描线+线段树

热门文章

  1. 常用到的一些js方法,记录一下
  2. JS下对日期进行比较
  3. 【LongIntervalRetries】让我们来实现支付宝的异步回调方案
  4. BitAdminCore框架应用篇:(三)核心套件querySuite入门介绍
  5. day85 ModuleForm Form组件
  6. 诸神眷顾的幻想乡(zjoi2015,bzoj3926)(广义后缀自动机)
  7. Python的hasattr() getattr() setattr() 函数使用方法
  8. poj1017----模拟
  9. ZZNU 2055(基姆拉尔森计算公式)
  10. QT for Android记录