我正在阅读有关MySQL中的并发控件的信息。但是现在我对隔离级别和锁感到困惑。我已经测试了排他锁和共享锁,但是我无法理解它们与隔离级别之间的关系?
我已经测试了一种情况: 我以隔离级别Repeatable读取并读取了R1行开始了事务,并通过Java程序发出了睡眠。同时,我启动了另一个事务,并更新了R1中的某些列并提交了该事务。当我在第一个事务中重新读取行R1时,会得到与在第一次读取期间读取的快照相同的快照。我理解这一点,因为这是可重复读取提供的功能。但是我的问题是为什么我能够在第二笔交易中更新R1行?
由于上述测试,我可以推断出一种隔离级别用于获得一致的读取(这不是脏的,可重复的和幻像的),但是我们可以更改数据,但是当我们获取锁(假定为排他性的)时,我们可以防止其他交易来更新相同的数据。
我的理解正确吗?如果我不是,请纠正我吗?我想念的是什么?