阅读记录锁文档

This commit is contained in:
asahi
2024-11-11 20:32:48 +08:00
parent c629b0ba50
commit 183625869f

View File

@@ -65,4 +65,19 @@ table level锁的兼容性如下所示
TABLE LOCK table `test`.`t` trx id 10080 lock mode IX
```
### Record Lock
记录锁是针对一条index record的锁。例如`SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE`语句会阻塞任何其他事务针对`c1 = 10`记录的插入、更新或删除。
records总是会针对index record加锁即使当前table没有定义索引。对于table未定义索引的情况innodb会创建一个隐藏的聚簇索引并使用该聚簇索引来进行record lock。
事务相关record lock的信息可以通过`SHOW ENGINE INNODB STATUS`来展示,其输出格式如下:
```
RECORD LOCKS space id 58 page no 3 n bits 72 index `PRIMARY` of table `test`.`t`
trx id 10078 lock_mode X locks rec but not gap
Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
0: len 4; hex 8000000a; asc ;;
1: len 6; hex 00000000274f; asc 'O;;
2: len 7; hex b60000019d0110; asc ;;
```