采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在 navicat客户端中,对 脏读,不可重复读,可重复读的情况下 做了实验… 事物A中 对主键值 “jgj” 进行了修改,并未提交… 事物B对 “jgj” 进行修改还是 等待…
总结: 所以 对唯一主键做更新操作的时候,不管隔离级别如何 都会加互斥锁(写锁)吗????
隔离级别是不同的事务之间的关系,而锁,是实现各种不同隔离级别的机制。
互斥锁,或者叫排它锁,或写锁,是说,事务A对某记录加锁以后,其他事务不能对该记录加任何锁(即使读也不行),只有事务A可以读写,直到A释放锁。而这种锁是用在Serializable隔离级别当中。
而默认的隔离级别是read-committed,是说,如果有一个事务A锁了一条记录,另一个事物B里面还是可以读这条记录,只不过,在之前的事务A提交之前,当前事务读到的还是未修改的状态,也就是说,只有提交了的时候,才会被另外的事务读到。
还有一个问题就是,你说的,事务B在更新记录"jgj"的时候会等待,当之前的事务A提交后,这个事务B的更新操作就会继续。这时候,如果是默认的事务隔离级别,其实事务A使用了更新锁,不是排它锁,所以在事务A提交后,事务B内的更新操作会继续执行。
所以,在事务中进行更新操作的时候,是有两种锁的,根据隔离级别会不一样。
登录后可查看更多问答,登录/注册
掌握分布式事务实现技术,是架构师必备技能。
1.2k 13
1.1k 13
1.6k 12
1.5k 8
1.6k 7