0

我已经阅读了有关此和事务隔离级别的信息,只是想知道.....

我有一些针对产品、类别、位置和库存的查询。现在产品、类别和位置数据很少发生变化,但您可以想象,库存会发生变化。WITH (NOLOCK)在产品、类别、位置上指定但不在库存上指定是否合理?我做了一些计时,它似乎确实提高了性能,所以我很高兴。

我的理解是,如果我没有WITH (NOLOCK)在 Stock 上指定,那应该只会得到提交的事务,而不会有脏读。同时,由于其他表的内容很少更改,因此可以安全地指定WITH (NOLOCK).

我正在处理的特定过程不会写入任何提到的表......它将一些结果放入#table 并从中返回行。

您的想法表示赞赏。

4

1 回答 1

1

用 NOLOCK 只放锁 Sch-S(模式稳定)

没有 NOLOCK S lock + Sch-S 但是 NOLOCK 给 READ UNCOMMITTED 数据(脏读),这会给你不正确的数据。

https://sqlstudies.com/2015/03/18/why-not-nolock/

使用 RSCI (Read Committed Snapshot Isolation) 读取已提交隔离级别的行版本控制实现 https://sqlperformance.com/2014/05/t-sql-queries/read-committed-snapshot-isolation

于 2017-11-03T09:51:22.357 回答