2014-01-07 7 views
1

Я новичок в SQL Server и не знаю, как работает механизм блокировки. Пожалуйста, помогитеЗамки в SQL Server - обновление/выбор

Проблема: необходимо удалить около 5 млн записей в таблице. Веб-сайт довольно часто извлекает данные из этой таблицы.

Мое понимание: delete будет блокировать только строку, поэтому это не должно влиять на сайт. Это правильно? Затем, что произойдет, если веб-сайт попытается вытащить удаляемую запись? Я знаю, что я звучу очень дилетантски, но мне очень нужно понимать эти основы.

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

+1

Не гуру, но я думаю, вы обнаружите, что если вы удалите такое количество данных, SQL Server, вероятно, заблокирует всю таблицу. – OTTA

ответ

0

Да, SQL Server использует блокировок на уровне строк на этих строках он вставляет/обновления/удаления - до определенной точки.

Эта точка находится примерно 5000 строк - если вы пытаетесь обновить или удалить более чем 5000 строк в одной транзакции, то SQL Server будет делать укрупнение блокировки а и поместить эксклюзивную блокировку на вся таблица в вопросе (SQL Server делает не заблокировать страницы - он будет переходить ко всей таблице - или раздел, если таблица разделена - прямо из замков на уровне строки).

С этого момента на этот стол не допускается даже SELECT до тех пор, пока транзакция удаления не будет выполнена (или была отброшена).

Смежные вопросы