mysql5.6 update 锁表后 kill 事务然后重启 mysql 导致后续同样的 update 语句都会出现超时

2020-01-16 09:17:06 +08:00
 julyone

今天突然发现 mysql 更新缓慢而且失败 SELECT * FROM information_schema.innodb_trx;发现有长时间 wait 的 update 语句,遂直接 kill,重启了一下 mysql。 后续发现该表的 update 语句都会超时,一直处于 wait 情况。其他表良好。

https://s2.ax1x.com/2020/01/16/lje0eK.png

查询情况的图片在上 一直会有个 query 为空的占有,杀死后 update 也会被干掉

4252 次点击
所在节点    MySQL
18 条回复
Girlphobia
2020-01-16 09:24:29 +08:00
听起来就像是这个表事务写入的某个锁没释放。

我不是 DBA,我瞎说的。
zuoakang
2020-01-16 09:53:23 +08:00
连接池吧
dyllen
2020-01-16 10:00:33 +08:00
是不是代码里面写的发生死锁了,我之前就有遇到,代码问题导致同一个事物里面出现死锁。
CallMeReznov
2020-01-16 10:03:58 +08:00
表特别大?而且没建或者索引长时间没更新?
查询时 IO 情况如何?
julyone
2020-01-16 10:04:56 +08:00
@dyllen
@zuoakang
没有哦 这个发生之后我直接在 Navicat 客户端执行语句也不行 而且连这个表都不能删除
julyone
2020-01-16 10:05:29 +08:00
@Girlphobia 有点像这个现象 但是没遇到这么奇怪的
julyone
2020-01-16 10:07:09 +08:00
@CallMeReznov update 的并没有发生很高的 IO 估计就没有执行更新 一直在某个地方卡住了一样 表是有点大 只是更新一行数据 innodb 引擎 也是锁行啊
SjwNo1
2020-01-16 10:09:50 +08:00
update 怎么锁表了?是不是没用索引
另外,可能是死锁了
julyone
2020-01-16 10:12:01 +08:00
@SjwNo1 用索引了呀 死锁可能性也有 后续情况是表都没办法删除了
SjwNo1
2020-01-16 10:52:14 +08:00
select @@autocommit; 看看, 是不是为 0 了我怀疑, 不过重启了应该没啥问题
julyone
2020-01-16 11:09:07 +08:00
@SjwNo1 排查过 是 1
SjwNo1
2020-01-16 11:09:56 +08:00
行吧~ 删库吧
SpencerCJH
2020-01-16 11:11:09 +08:00
行吧~ 删库吧
wangyzj
2020-01-16 13:52:33 +08:00
隔离级别呢?
试过重建表和索引么?
liuxu
2020-01-16 14:39:23 +08:00
别猜了,贴 mysql 的 log 吧
lenmore
2020-01-16 16:13:05 +08:00
有 SQL 执行完了,但是事务没提交。
可能是应用启了事务,但是异常退出或者在做什么耗时的从操作,一直没 commit
abccccabc
2020-01-16 17:36:46 +08:00
有可能是事务没有提交导致的,以前我公司也出现过大面积的这种情况。检查未提交 的 SQL 对应的程序。改吧。没啥好办法。
ETO
2020-01-16 18:31:45 +08:00
楼主解决好了,@我一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/638313

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX