请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

写锁 跟 隔离级别的关系?

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

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

正在回答 回答被采纳积分+3

1回答

大漠风 2020-02-12 22:03:11

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

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

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

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

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信