TRANSACTION ISOLATION LEVEL REPEATABLE在SQL Server中读取

Mar*_*ano 4 sql-server biztalk isolation-level

使用SET TRANSACTION ISOLATION LEVEL REPEATABLE READ时有哪些风险或性能下降?

我们有一些从BizTalk服务调用的SP.我们有时会遇到僵局.如果我们改变隔离级别,有哪些风险和可能的性能退化?

Nea*_*alB 5

Repeatable Read将锁定所有已获取的行.在使用游标获取大量数据的情况下,这可能会导致与其他用户的争用,因为它们无法获取锁定以更新游标使用可重复读取读取的任何行,直到游标关闭.

性能下降的风险是交易可能遭受更多的超时和/或死锁.此风险与两个事务需要同时读取/更新相同行的概率成比例.另一个可能影响您的应用程序的因素是锁定的大小.如果在页面级别进行锁定,则如果不同事务需要访问的数据位于同一页面上,则可能发生争用 - 不一定是同一行.

另一方面,当您使用较低的隔离级别(例如游标稳定性)时,您可以保留先前在您的事务中获取的行可能会在您的工作单元完成之前由其他事务更新的可能性.