InnoDB

时间:2018-06-28 09:30:26

标签: mysql database deadlock

我的应用程序遇到了mysql死锁问题,这使我很困惑。希望有人可以帮助我分析原因。

死锁后,我使用SHOW ENGINE INNODB STATUS命令查找原因,但发现它们是两个不同的表,事务1只是具有表'bond_company'的'select'查询,事务2是具有以下内容的更新表“贷款”。为什么两个不相关的表会产生死锁问题,而其中一个sql只是带有S锁的“选择”查询?

下面是结果中信息显示的一部分,有些敏感的信息可能被隐藏了,希望对您有所帮助。

***(1)交易: 交易10CE99C9,正在活动的13.489秒起始索引读取 mysql表正在使用中1,锁定1 LOCK WAIT 250个锁结构,堆大小31160,7549行锁 LOCK BLOCKING MySQL线程ID:3224405块3224407 MySQL线程ID 3224407,操作系统线程句柄0x2b3002a83700,查询ID 1395754180 ip db_account统计信息

select bond_id, bond_code, bond_name from bond_company where bond_id = 1

***(1)等待授予此锁: 记录锁定空间ID 24016页面编号3 n位表PRIMARY的80索引db_accountbond_company trx id 10CE99C9锁定模式S锁定记录但不等待间隙

***(2)交易: 交易10CE99F9,正在活动7.532秒的起始索引读取 mysql表正在使用中1,锁定1 175个锁定结构,堆大小31160、792个行锁定,撤消日志条目1 MySQL线程ID 3224405,操作系统线程句柄0x2b3002a42700,查询ID 1395754532 ip db_account更新

update loan SET if_sussessful = 'Y' where loan_id = 7177

***(2)持有锁: RECORD LOCKS空间ID 24016页面编号3 n位80表PRIMARY的索引db_accountbond_company trx id 10CE99F9 lock_mode X锁定rec但不锁定空白

***(2)等待授予此锁: RECORD LOCKS空间ID 24154页面编号325 n位104表PRIMARY的索引db_accountloan trx id 10CE99F9 lock_mode X锁定rec但不等待间隔

***我们回滚交易(2)

0 个答案:

没有答案