Будет ли удалить SQL блокирует таблицу, которая предотвращает вставку новых данных в SQL Server 2005? - PullRequest
6 голосов
/ 26 мая 2011

Если я попытаюсь удалить группу данных из таблицы. скажи

DELETE FROM myTable Where CreationDate < GetDate()

, для удаления которой требуются часы, будет ли заблокирована эта таблица, и не может быть новой вставки?

Эта таблица не ссылается сама на себя. Я хотел бы предположить, что я все еще могу вставить новые данные, пока они удаляются. Будет ли удаление sql использовать эксклюзивную блокировку, которая предотвращает любой доступ к таблице?

Спасибо

Ответы [ 2 ]

9 голосов
/ 26 мая 2011

Вы можете пакетировать их, чтобы предотвратить блокировку всей таблицы:

WHILE 1 = 1
  BEGIN
        DELETE  TOP 10000 FROM  myTable WHERE CreationDate < GetDate()

        IF @@ROWCOUNT = 0
            BREAK
  END
0 голосов
/ 26 мая 2011

Есть много вещей, которые могут изменить это поведение.Однако, если вы имеете в виду более 5 тыс. Записей, вероятно, он заблокируется.Вы можете избежать этого, используя меньшие партии или указав уровень изоляции, который не будет блокироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...