select r.*
from reservations r
where r.workspaceSid = 'WS0c9faa70166e42f4cf3a8df4b11b4d73'
and r.workerSid = 'WK89d7521c91805d7f0a8a2d38a6ec7ab4'
and r.status IN (0, 6) for update
2023-03-22T10:35:38.458591Z 33536411 [注意] InnoDB:*** (1) 等待授予此锁:
RECORD LOCKS space id 474931 page no 14657 n bits 416 index fk_workspace_sid of table
twilio_wds
.reservations
trx id 68165090733 lock_mode X waiting
2023-03-22T10:35:38.458616Z 33536411 [注意] InnoDB: *** (2) 交易:
TRANSACTION 68165090729,ACTIVE 0 秒获取行 使用中的 mysql 表 3,已锁定 3 89 个锁结构,堆大小 8400,170 个行锁,撤消日志条目 1 MySQL 线程 id 33536411,OS 线程句柄 139955900372736,查询 id 47887747705 172.25.89.40 twilio 发送数据
select r.*
from reservations r
where r.workspaceSid = 'WS0c9faa70166e42f4cf3a8df4b11b4d73'
and r.workerSid = 'WK53a59d20955be23871feb083639ecd30'
and r.status IN (0, 6) for
update
2023-03-22T10:35:38.458647Z 33536411 [注意] InnoDB: *** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 474931 page no 14657 n bits 416 index fk_workspace_sid of table
twilio_wds
.reservations
trx id 68165090729 lock_mode X
2023-03-22T10:35:38.458665Z 33536411 [注意] InnoDB:*** (2) 等待授予此锁:
这是innodb状态页面死锁结果。在这些事务中访问的行是不同的,因此不应该存在可能导致死锁的争用,对吗?
我试图了解受影响的行和不同的行。
这个综合指数可能有帮助:
INDEX(workspaceSid, workerId, status)
在任何情况下,您的应用程序都必须为死锁做好准备。通常的代码是捕获它并重放整个交易。