我已经读过这个和事务隔离级别,只是想知道.....
我有一些查询产品,类别,位置和查询股票。
现在产品,类别和位置数据很少发生变化,但正如您可以想象的那样,库存确实如此。
在产品,类别,地点上指定WITH (NOLOCK)
但是没有在库存中指定它是否合理?
我已经完成了一些时间,似乎确实提高了性能,所以我很谨慎。
我的理解是,如果我没有在Stock上指定WITH (NOLOCK)
,那应该只获得已提交的事务而不会有脏读。
同时,由于其他表格内容很少更改,因此可以安全地指定WITH (NOLOCK)
。
我正在处理的特定proc不会写入任何提到的表....它会将一些结果放入#table并从中返回行。
你的想法很受欢迎。
答案 0 :(得分:1)
用NOLOCK只放锁Sch-S(架构稳定性)
没有NOLOCK S锁+ Sch-S 但是NOLOCK给出了READ UNCOMMITTED数据(脏读),它会给你不正确的数据。
https://sqlstudies.com/2015/03/18/why-not-nolock/
使用RSCI(读提交快照隔离)读取提交隔离级别的行版本实现 https://sqlperformance.com/2014/05/t-sql-queries/read-committed-snapshot-isolation