I am fairly new to locks and hints.
I have a table with very frequent SELECT
and INSERT
operations. The table has 11 million records.
I have added a new column to it and I need to copy over the data from an existing column in the same table to the new column.
I am planning to use ROWLOCK
hint to avoid escalating locks to table level locks and blocking out all other operations on the table. For example:
UPDATE
SomeTable WITH (ROWLOCK)
SET
NewColumn = OldColumn
Questions:
- Would a
NOLOCK
instead of ROWLOCK
? Note, once the records are inserted in the table, the value for OldColumn does not change, so NOLOCK
would not cause dirty reads.
- Does
NOLOCK
even make sense in this case, because the SQL Server would have to anyways get update locks for UPDATE
.
- Is there a better way of achieving this?
I know hints are to be avoided and SQL Server usually makes smarter choices, but I don't want to get the table locked out during this update.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…