SQL Server NOLOCK提示会返回部分写入的行吗?

时间:2009-10-02 19:25:58

标签: sql sql-server tsql nolock

首先,我不是在询问是否应该使用NOLOCK。让我们过去吧。

我想问题归结为sql server如何写入数据?是一次写入整行还是一次写一列?

我问,因为正在考虑NOLOCK提示。只要返回整个行(或不返回),脏读就可以了。部分写入的行是不可接受的。

2 个答案:

答案 0 :(得分:6)

没有。插入,更新和删除等数据修改操作受低级物理Latches保护。所有数据访问操作(包括无锁SELECT)都必须符合锁存协议。结果是任何读者都看不到部分写入。

答案 1 :(得分:3)

不,它不会返回部分写入的行。 NOLOCK仅表示此查询不会创建新锁。这并不意味着它不会尊重现有的锁,并且sql server不会在没有首先获得锁的情况下执行任何写入数据的操作。

它可能做的是返回过时或不再相关的行,因为其他东西写入了通常被此查询锁定的行。