写锁 跟 隔离级别的关系?
来源: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内的更新操作会继续执行。
所以,在事务中进行更新操作的时候,是有两种锁的,根据隔离级别会不一样。
00
相似问题