表user:
- CREATE TABLE `USER` (
- `ID` INT(11) NOT NULL AUTO_INCREMENT,
- `NAME` VARCHAR(300) DEFAULT NULL,
- `AGE` INT(11) DEFAULT NULL,
- PRIMARY KEY (`ID`)
- ) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=UTF8
下面演示事务1、事务2工作的情况:

这是一个简单的死锁场景,事务1、事务2彼此等待对方释放锁,InnoDB存储引擎检测到死锁发生,让事务2回滚,这使得事务1不再等待事务B的锁,从而能够继续执行。那么InnoDB存储引擎是如何检测到死锁的呢?为了弄明白这个问题,我们先检查此时InnoDB的状态:
- show engine innodb statusG
------------------------
LATEST DETECTED DEADLOCK
------------------------
- 2018-01-14 12:17:13 0x70000f1cc000
- *** (1) TRANSACTION:
- TRANSACTION 5120, ACTIVE 17 sec starting index read
- mysql tables in use 1, locked 1
- LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)
- MySQL thread id 10, OS thread handle 123145556967424, query id 2764 localhost root updating
- update user set name='haha' where id=4
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
- RECORD LOCKS space id 94 page no 3 n bits 80 index PRIMARY of table `test`.`user` trx id 5120 lock_mode X locks rec but not gap waiting
- Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0
- 0: len 4; hex 80000004; asc ;;
- 1: len 6; hex 0000000013fa; asc ;;
- 2: len 7; hex 520000060129a6; asc R ) ;;
- 3: len 4; hex 68616861; asc haha;;
- 4: len 4; hex 80000015; asc ;;
*** (2) TRANSACTION:
- TRANSACTION 5121, ACTIVE 12 sec starting index read
- mysql tables in use 1, locked 1
- 3 lock struct(s), heap size 1136, 2 row lock(s)
- MySQL thread id 11, OS thread handle 123145555853312, query id 2765 localhost root updating
- update user set name='hehe' where id=3
*** (2) HOLDS THE LOCK(S):
- RECORD LOCKS space id 94 page no 3 n bits 80 index PRIMARY of table `test`.`user` trx id 5121 lock_mode X locks rec but not gap
- Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0
- 0: len 4; hex 80000004; asc ;;
- 1: len 6; hex 0000000013fa; asc ;;
- 2: len 7; hex 520000060129a6; asc R ) ;;
- 3: len 4; hex 68616861; asc haha;;
- 4: len 4; hex 80000015; asc ;;
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|