繁体   English   中英

ReadUncommitted 事务创建锁

[英]ReadUncommitted transaction creating locks

我在 ReadUncommited 模式下使用 .NET 5.0 事务:

MyDbcontext.Database.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)

我的理解是,在这种模式下,数据库上没有锁(当然,用户可能会读取不是最新的记录)。

但我注意到在提交或回滚此事务之前,我确实获得了锁。 我可以在提交/回滚之前触发断点并在我的 MS SQL Studio Manager 中执行 SQL 请求时看到它。 在事务提交或回滚之前,请求不会返回。

这是它应该工作的方式吗? 如果是这样,有没有办法让我的交易完全没有锁定? 我不介意阅读未提交的记录,但我仍然需要一个事务来确保所有数据库操作是否运行。

SQL 服务器在读取未提交的隔离级别下读取时仍会请求架构稳定性锁。

此外 SQL 服务器在写入时请求排他锁,无论它运行在哪个隔离级别下。

我建议您不要使用未提交的读取隔离级别,因为它会产生除未提交读取之外的其他问题,例如读取同一行两次或跳过读取一行。

我建议您使用已提交的快照或快照隔离级别,而不是未提交的读取。 这些隔离级别在读取时不请求共享锁,同时保持重要的保证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM