我读过关于微软的网站 http://msdn.microsoft.com/en-us/library/ms173763.aspx共享锁和快照隔离
读取数据时,当数据库被恢复,除了SQL Server不要求锁。
这是否意味着使用READ_COMMITTED_SNAPSHOT/SNAPSHOT ISOLATION的Sql Server根本不使用共享锁? 这怎么可能?
例如,如果有2个交易。 第一个事务T1想要更新某一行。 第二个事务T2开始读取同一行(此事务将他复制到某个输出缓冲区,响应缓冲区或任何在Sql Server中调用的事务)。 与此同时,事务T1开始更新该行(它首先创建了版本化行)。
事务T2是否有可能读取未被取消的数据?请记住,事务T2在T1更新之前开始复制该行,因此该行没有排它锁。
这种情况甚至是可能的吗?如何在避免在复制数据时设置共享锁的情况下避免这种情况?
因此,每次某个事务正在读取数据时,它会在读取数据期间在完成页面上获取锁存并在完成后立即释放锁存器? – Marka
查看[白羊座论文1.4章](http://www.cs.berkeley.edu/~brewer/cs262/Aries.pdf) –