今天突然发现 mysql 更新缓慢而且失败 SELECT * FROM information_schema.innodb_trx;发现有长时间 wait 的 update 语句,遂直接 kill,重启了一下 mysql。 后续发现该表的 update 语句都会超时,一直处于 wait 情况。其他表良好。
https://s2.ax1x.com/2020/01/16/lje0eK.png
查询情况的图片在上 一直会有个 query 为空的占有,杀死后 update 也会被干掉
1
Girlphobia 2020-01-16 09:24:29 +08:00 via Android
听起来就像是这个表事务写入的某个锁没释放。
我不是 DBA,我瞎说的。 |
2
zuoakang 2020-01-16 09:53:23 +08:00
连接池吧
|
3
dyllen 2020-01-16 10:00:33 +08:00
是不是代码里面写的发生死锁了,我之前就有遇到,代码问题导致同一个事物里面出现死锁。
|
4
CallMeReznov 2020-01-16 10:03:58 +08:00
表特别大?而且没建或者索引长时间没更新?
查询时 IO 情况如何? |
5
julyone OP |
6
julyone OP @Girlphobia 有点像这个现象 但是没遇到这么奇怪的
|
7
julyone OP @CallMeReznov update 的并没有发生很高的 IO 估计就没有执行更新 一直在某个地方卡住了一样 表是有点大 只是更新一行数据 innodb 引擎 也是锁行啊
|
8
SjwNo1 2020-01-16 10:09:50 +08:00
update 怎么锁表了?是不是没用索引
另外,可能是死锁了 |
10
SjwNo1 2020-01-16 10:52:14 +08:00
select @@autocommit; 看看, 是不是为 0 了我怀疑, 不过重启了应该没啥问题
|
12
SjwNo1 2020-01-16 11:09:56 +08:00
行吧~ 删库吧
|
13
SpencerCJH 2020-01-16 11:11:09 +08:00
行吧~ 删库吧
|
14
wangyzj 2020-01-16 13:52:33 +08:00
隔离级别呢?
试过重建表和索引么? |
15
liuxu 2020-01-16 14:39:23 +08:00
别猜了,贴 mysql 的 log 吧
|
16
lenmore 2020-01-16 16:13:05 +08:00
有 SQL 执行完了,但是事务没提交。
可能是应用启了事务,但是异常退出或者在做什么耗时的从操作,一直没 commit |
17
abccccabc 2020-01-16 17:36:46 +08:00
有可能是事务没有提交导致的,以前我公司也出现过大面积的这种情况。检查未提交 的 SQL 对应的程序。改吧。没啥好办法。
|
18
ETO 2020-01-16 18:31:45 +08:00
楼主解决好了,@我一下
|