Автор: Nomadic
По умолчанию, оператор UPDATE в MS SQL Server пытается поставить
эксклюзивную табличную блокировку. Вы можете обойти это, используя
ключевое слово FROM в сочетании с опцией PAGLOCK для использования
MS SQL Server страничных блокировок вместо эксклюзивной табличной
блокировки: UPDATE orders SET customer_id=NULL FROM orders(PAGLOCK) WHERE customer_id=32;
Блокиpовка на всю таблицу пpи UPDATE ставится только в том
случае, если по пpедикату нет индекса. Так, можно пpосто
пpоиндексиpовать таблицу orders по полю customer_id, и не забывать
делать UPDATE STATISTIC, хотя будет работать и с PAGLOCK. Просто не
факт, что UPDATE всегда делает табличную блокировку. |