试图更好地理解SQL Server中基于行版本控制的事务隔离- RCSI (读取提交快照隔离和快照)。
MSDN在线文章"选择基于行版本控制的隔离级别“指出:
这与Neal的“基于Server 2005行版本的事务隔离”中金伯利·L·特里普的声明相矛盾:
那么,为什么RCSI使用较少(或相同)的空间?
更新:
也许我把原来的问题表述得很糟糕,但这意味着对两个相互矛盾的“理论”都有RTFM的解释和证实,我想了解:
哪个是对的?
为什么这个真的是对的呢?
和
为什么另一个错误不是真的(为什么是另一个错误?)
发布于 2013-12-13 14:38:55
读取提交的快照隔离(语句级快照隔离)可能比快照隔离(事务级快照隔离)使用更少的存储空间,因为通常在生成行版本后的一段时间内不需要行版本。
对于事务级快照隔离,版本必须在事务的整个持续时间内停留,这可能是相当长的时间(或相当长的时间,如这里所见)。当然,语句也可以运行很长时间,但通常情况下,事务将花费更长的时间。
为了强调这一点:在快照隔离下运行的事务可以看到事务开始时存在的提交数据。这意味着必须维护行版本,直到整个事务完成。如果在RCSI下运行相同的事务,则可以在每个语句之后释放行版本。总之,在相同的工作负载上,快照隔离会导致比RCSI更大的版本存储大小。
在启用任何一个或两个设置时都会生成相同的版本。我相信金伯利指的是在写率意义上的存储影响,而不是使用的存储,所以你提到的这两种说法并不矛盾,只是有点不明确或不明确。
https://dba.stackexchange.com/questions/54940
复制相似问题