<分区>
并发控制和事务隔离级别有什么区别?
我清楚地理解了它们中的每一个,但是,我在将它们相互联系起来时遇到了一些问题。具体来说,我看到它们的功能有一些重叠,我不确定什么时候应该使用一个而不是另一个。还是应该两者一起使用?
另外,悲观锁定与可重复读取是什么意思?可重复读取不是已经暗示所有要编辑的值都将被锁定吗?那么为什么还需要悲观锁呢?
<分区>
并发控制和事务隔离级别有什么区别?
我清楚地理解了它们中的每一个,但是,我在将它们相互联系起来时遇到了一些问题。具体来说,我看到它们的功能有一些重叠,我不确定什么时候应该使用一个而不是另一个。还是应该两者一起使用?
另外,悲观锁定与可重复读取是什么意思?可重复读取不是已经暗示所有要编辑的值都将被锁定吗?那么为什么还需要悲观锁呢?
最佳答案
问题的出现是因为有两种并发控制模型,有时会被 SQL 实现混用。
悲观意味着读取的行被锁定。乐观意味着读取的行未锁定。
Repeatable Read 的经典 2PL 实现总是悲观的。 Repeatable Read 的多版本实现是乐观的。它不会锁定为 SELECT 语句读取的行,并允许其他事务修改已在 SELECT 中读取的行。此类更改对执行 SELECT 的事务不可见,直到它被提交。
关于mysql - "Repeatable read"与乐观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668531/