相关疑难解决方法(0)

如何避免UPDATE语句在更新大量记录时锁定整个表

我对锁和提示相当新.

我有一张非常频繁SELECTINSERT操作的桌子.该表有1100万条记录.

我已经添加了一个新列,我需要将数据从同一个表中的现有列复制到新列.

我打算使用ROWLOCK提示来避免将锁升级到表级锁并阻止表上的所有其他操作.例如:

UPDATE 
    SomeTable WITH (ROWLOCK)
SET
    NewColumn = OldColumn
Run Code Online (Sandbox Code Playgroud)

问题:

  1. NOLOCK不是ROWLOCK?请注意,一旦将记录插入表中,OldColumn的值就不会更改,因此NOLOCK不会导致脏读.
  2. 难道NOLOCK甚至意义在这种情况下,因为SQL Server将不得不反正获得更新锁UPDATE.
  3. 有没有更好的方法来实现这一目标?

我知道要避免使用提示,SQL Server通常会做出更明智的选择,但我不希望在此更新期间锁定表.

t-sql sql-server

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

sql-server ×1

t-sql ×1