MySQL 死锁日志解析:两个事务争夺 processStamp 字段锁
这段 MySQL 死锁日志记录了两个事务的信息。第一个事务 (TRANSACTION 10024296578) 执行了一个更新操作,但是由于另一个事务持有了该表中记录的锁,所以它处于等待状态。第二个事务 (TRANSACTION 10024296579) 正在执行一个更新或删除操作,并且持有了该表中的锁。这导致第一个事务无法继续执行,从而形成了死锁。
在第一个事务中,该表的一个记录被锁定 (lock_mode X locks rec),但是这个事务还没有获得 gap 锁。在第二个事务中,该表中的两个记录被锁定,并且有三个锁结构。
第一个事务的更新操作是将符合一定条件的记录中的 'processStamp' 字段设为 null,而第二个事务的更新操作是将一个指定的记录中的 'leadingSts'、'trailingSts'、'processType' 和 'webRefundCreated' 字段更新为指定的值,并将 'processStamp' 字段设为 null。由于两个事务都需要对 'processStamp' 字段进行更新,所以它们之间就产生了冲突。
原文地址: https://www.cveoy.top/t/topic/oaUQ 著作权归作者所有。请勿转载和采集!