Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Блокируется таблица в MS SQL Server

Delphi , Базы данных , SQL

Блокируется таблица в MS SQL Server

Автор: 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 всегда делает табличную блокировку.

Статья обсуждает распространенный вопрос в MS SQL Server, где заявка на обновление таблицы пытается занять исключительный блокировку таблицы, что может привести к проблемам с производительностью и блокировке других запросов. Автор предлагает использовать клаузу FROM с опцией PAGLOCK, чтобы использовать блокировку на уровне страниц вместо блокировки на уровне строк.

Основной пункт статьи заключается в том, что при обновлении таблицы без указания конкретного индекса или хинтов блокировки SQL Server по умолчанию будет принимать исключительную блокировку таблицы. Это может привести к проблемам с производительностью и блокировке других запросов, которые требуют доступа к той же таблице.

Автор предлагает две решения:

  1. Создать индекс на столбце customer_id в таблице orders. Это позволит SQL Server использовать более эффективный механизм блокировки, который является блокировкой на уровне страниц.
  2. Использовать опцию PAGLOCK с клаузой FROM в заявке на обновление. Это заставит SQL Server использовать блокировку на уровне страниц вместо блокировки на уровне строк.

Статья также отмечает, что даже если вы создадите индекс и используете опцию PAGLOCK, заявка на обновление может все еще занять блокировку таблицы, если нет обновления статистики (т.е., UPDATE STATISTICS). Это подчеркивает важность регулярного обновления статистик для часто обновляемых таблиц.

В целом, статья предоставляет ценные сведения о механизмах блокировки в MS SQL Server и предлагает практические решения для улучшения производительности и уменьшения проблем с блокировкой.

Оператор UPDATE в MS SQL Server может быть обойдан использованием страничных блокировок вместо эксклюзивной табличной блокировки с помощью ключевого слова FROM и опции PAGLOCK.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: SQL ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 17:09:36/0.010499954223633/2