学习InnoDB的锁机制原理解析

一、查看数据库默认隔离级别:

select @@tx_isolation;

在这里插入图片描述
修改数据库默认隔离级别:

set tx_isolation = "REPEATABLE-READ"

在这里插入图片描述

二、InnoDB的锁机制原理解析

在这里插入图片描述
InnoDB行锁,就是给索引上的索引项加锁,如果操作的字段没有索引,则直接使用表锁。

2.1 共享锁

S锁 读锁 ,上锁数据其他事务不能修改,可读取

2.2 排他锁
X锁 写锁 ,

2.3 意向共享锁 IS
获得操作表的共享锁之前,需要先获取意向共享锁。
可以优化锁之间的性能。快速返回
事务A修改user表的记录r,会给记录r上一把行级的排他锁(X),同时会给user表上一把意向排他锁(IX),这时事务B要给user表上一个表级的排他锁就会被阻塞。意向锁通过这种方式实现了行锁和表锁共存且满足事务隔离性的要求。

2.4 意向排他锁 IX
在这里插入图片描述2.5 自增锁
主键的自增id,
体现:
主键自增的表中,删除某一行数据之后,出入新数据,会出现新的id

2.6 临键锁
某一个查询范围的两个临界,对应在表中的相邻的两个数据之间的数据不能修改
000
111
222
333
444
555
操作了>222 and < 333 会直接锁数据到111、222、333、444、四条数据
索引的内在的是B+树,between的操作查询了相邻的两个叶子节点
左开右闭
2.7 间隙锁
没有匹配上,会从临键锁降级为间隙锁。

当我们用范围条件条件检索数据(非聚簇索引、非唯一索引),并请求共享或排他锁时,InnoDB会给符合条件的数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,称为间隙,InnoDB也会为这些间隙加锁,即间隙锁。
间隙锁的目的是为了组织其他事务在间隙中新增修改数据

2.8 记录锁
可以精确到一条数据的锁,则只会锁到这条记录,其他数据没问题。


THE END
GOOD LUNCK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值