Sql Server隔离级别“读取未提交”正在锁定



我将隔离级别定义为READ UNCOMMITTED,因为这是一个在几个表上长时间运行的过程,并且没有脏读的风险,因为我只是插入新数据。

根据我的理解,因为我使用的是这种隔离级别,所以我应该能够从插入行的表中执行SELECT语句,但我不能,它会被阻塞。

为什么这个隔离级别会阻塞SELECT语句?

它应该允许查询这些表,并在最坏的情况下检索脏数据。

为了防止这有帮助,我正在使用CURSOR(我知道,我也讨厌它们,但我没有写这段代码)处理真正大的数据和多个表。

执行插入操作时(无论隔离级别如何)都会发生锁。如果不进行一些锁定,就无法插入行。隔离级别会影响阅读。

如果您使用(nolock)从表a中选择*,您将读取未提交的行,但在很短的一段时间内(由于插入)将发生锁定。

最新更新