Sql 记录在RepeatableRead上写锁定
我有一个SQL Server查询(使用LLBL ORM,如果这对问题很重要的话),它在一组相关表上执行大型获取 此查询在隔离级别为可重复读取的事务中执行,并由查询主表中的两个“状态”列进行筛选 被“写锁定”的记录是否仅与主表中的筛选器匹配,或者在提取完成之前所有记录是否都被有效地写锁定?我猜需要后者来确保在事务期间不会向结果集中添加新记录 以确保没有新记录添加到 事务处理期间的结果集 这需要可序列化的隔离级别。Repeatable Read only可确保读取的行在事务中稍后可以再次读取,但不会阻止并发事务插入新行,并且这些新行在insert提交后在原始事务中可见。在Serializable Read下,锁将扩展到范围,因此不会出现满足筛选器要求的新记录。根据表模式(可用索引),限制可能扩展到整个表 您也应该认真考虑在快照隔离下执行所有操作,这可以解决几乎所有已知的异常,但在资源上更昂贵,请参阅Sql 记录在RepeatableRead上写锁定,sql,transactions,locking,Sql,Transactions,Locking,我有一个SQL Server查询(使用LLBL ORM,如果这对问题很重要的话),它在一组相关表上执行大型获取 此查询在隔离级别为可重复读取的事务中执行,并由查询主表中的两个“状态”列进行筛选 被“写锁定”的记录是否仅与主表中的筛选器匹配,或者在提取完成之前所有记录是否都被有效地写锁定?我猜需要后者来确保在事务期间不会向结果集中添加新记录 以确保没有新记录添加到 事务处理期间的结果集 这需要可序列化的隔离级别。Repeatable Read only可确保读取的行在事务中稍后可以再次读取,但不会