当带着更新的意图选择行时,该更新进程需要 update 锁。update 锁允许其他进程读或共享将要被更新的行,但它们不允许那些进程更新或删除它。
就在更新发生之前,更新进程将共享锁提升为排他锁。排他锁防止其他进程读取或修改行的内容,直到释放该锁为止。
更新进程可从另一进程在行上或在有共享锁的页上获得 update 锁,但您不可将 update 锁从共享的提升到排他的(且不可发生更新),直到其他进程释放它的锁为止。
如果单个更新影响的行的数目很大,则您可超过在同时发生的锁的最大数目上设置的限制。如果发生此情况,则您可减少每 UPDATE 语句的事务数,或您可在执行该语句之前锁定页或整个表。