学习资料
【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩】
【阿里巴巴Java开发手册】https://www.w3cschool.cn/alibaba_java
锁的内存结构
我们前边说对一条记录加锁的本质就是内存中创建一个
锁结构
与之关联,那么是不是一个事务对多条记录加锁,就要创建多个锁结构
呢?比如:
# 事务T1
SELECT * FROM user LOCK IN SHARE MODE;
理论上创建多个
锁结构
没问题,但是如果一个事务要获取10000条记录的锁,生成10000个锁结构也太崩溃了!所以决定在对不同记录加锁时,如果符合下边这些条件的记录会放到一个锁结构
中。
1、在同一个事务中进行加锁操作。
2、被加锁的记录在同一个页面中。
3、加锁的类型是一样的。
4、等待状态是一样的。
InnoDB
存储引擎中的锁结构
如下:
锁监控