写锁 跟 隔离级别的关系?

来源:2-4 事务原则与实现:JDBC事务(下)

qq_改成什么名字呢_0

2020-02-04

在 navicat客户端中,对 脏读,不可重复读,可重复读的情况下 做了实验…
事物A中 对主键值 “jgj” 进行了修改,并未提交…
事物B对 “jgj” 进行修改还是 等待…

总结:
所以 对唯一主键做更新操作的时候,不管隔离级别如何 都会加互斥锁(写锁)吗????

写回答

1回答

大漠风

2020-02-12

隔离级别是不同的事务之间的关系,而锁,是实现各种不同隔离级别的机制。

互斥锁,或者叫排它锁,或写锁,是说,事务A对某记录加锁以后,其他事务不能对该记录加任何锁(即使读也不行),只有事务A可以读写,直到A释放锁。而这种锁是用在Serializable隔离级别当中。

而默认的隔离级别是read-committed,是说,如果有一个事务A锁了一条记录,另一个事物B里面还是可以读这条记录,只不过,在之前的事务A提交之前,当前事务读到的还是未修改的状态,也就是说,只有提交了的时候,才会被另外的事务读到。

还有一个问题就是,你说的,事务B在更新记录"jgj"的时候会等待,当之前的事务A提交后,这个事务B的更新操作就会继续。这时候,如果是默认的事务隔离级别,其实事务A使用了更新锁,不是排它锁,所以在事务A提交后,事务B内的更新操作会继续执行。

所以,在事务中进行更新操作的时候,是有两种锁的,根据隔离级别会不一样。

0
0

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程