对于 SQL Server 2008 R2 中的 SNAPSHOt 隔离级别,MSDN ADO.Net 文档中提到了以下内容:
修改数据的事务不会阻塞读取数据的事务,读取数据的事务不会阻塞写入数据的事务,因为它们通常会在 SQL Server 中的默认 READ COMMITTED 隔离级别下阻塞。
当两个事务都处于 SNAPSHOT 隔离模式时,没有提及写入是否会阻止写入。所以我的问题如下: SNAPSHOT transaction1 中的写入是否会写入另一个 SNAPHOT transaction2 中的相同表?
最近更新
在对我的问题进行了很多思考之后,我得出了以下段落中提到的结论。希望其他人可以对此有所了解。
没有写入不会阻塞写入的关系数据库。换句话说,写入总是会阻塞写入。写入将包括诸如 INSERT 或 UPDATE 或 DELETE 之类的语句。无论您使用哪种隔离级别都是如此,因为当数据库中发生多次写入时,所有关系数据库都需要实现数据一致性。当然,同时写入需要有冲突(如插入同一个表或更新相同的行)才能发生这种阻塞。