我了解“可重复读取事务隔离级别”的含义。

在可重复读事务期间,我的事务不会看到在我的事务开始之后提交了数据的任何事务。

但是我很难理解它是如何在sql服务器端实际实现的。是在每个事务开始时获取数据库快照并将其保留给该特定事务吗?

如果是这样,那么如果在任何时间点启动多个可重复的读事务,则内存资源量将是巨大的。

有人还能阐明可重复读取中的共享/独占锁定角色

最佳答案

我花了一段时间寻找相同的答案,经过一些搜索工作,我认为它基本上是通过使用MVCCSnapshot Read)+ GAP LOCK + NEXT KEY LOCK来实现的。

我不确定我是否正确理解,但我认为某些关键字可能有助于进一步的搜索工作。

顺便说一句,如果有人能很好地理解中文,这里有一些用中文写的很好的解释:

http://hedengcheng.com/?p=771
https://www.cnblogs.com/kismetv/p/10331633.html

关于mysql - 在MySql服务器端可重复读取实现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31136170/

10-11 01:42