我理解可重复读取事务隔离级别的含义。
在可重复读取事务期间,我的事务处理后将看不到在事务开始后已提交数据的任何事务。
但是我很难理解它是如何在sql server端实际实现的。是否在每个事务开始时都会获取数据库的快照并为该特定事务留出空间?
如果是这样,那么如果在任何时间点启动多个可重复读取事务,内存资源量将会很大?
也有人可以在可重复读取中阐明共享/独占锁定角色的作用 ?
答案 0 :(得分:0)
一段时间后,我寻求相同的答案,经过一些搜索工作,我认为它基本上是通过使用MVCC
(Snapshot Read
)+ GAP LOCK
+ NEXT KEY LOCK
来实现的。
我不确定我是否正确理解,但我认为某些关键字可能有助于进一步的搜索工作。
顺便说一句,如果有人能很好地理解中文,那么这里有一些用中文写的很好的解释:
http://hedengcheng.com/?p=771
https://www.cnblogs.com/kismetv/p/10331633.html