我对锁和提示相当新.
我有一张非常频繁SELECT和INSERT操作的桌子.该表有1100万条记录.
我已经添加了一个新列,我需要将数据从同一个表中的现有列复制到新列.
我打算使用ROWLOCK提示来避免将锁升级到表级锁并阻止表上的所有其他操作.例如:
UPDATE
SomeTable WITH (ROWLOCK)
SET
NewColumn = OldColumn
Run Code Online (Sandbox Code Playgroud)
问题:
NOLOCK不是ROWLOCK?请注意,一旦将记录插入表中,OldColumn的值就不会更改,因此NOLOCK不会导致脏读.NOLOCK甚至意义在这种情况下,因为SQL Server将不得不反正获得更新锁UPDATE.我知道要避免使用提示,SQL Server通常会做出更明智的选择,但我不希望在此更新期间锁定表.