Моя проблема заключается в том, что мне нужно удалить около 60M записей из таблицы, не вызывая взаимоблокировки с другими процессами, использующими эту таблицу. На этом этапе я почти закончил удаление записей, используя цикл while, который обрабатывает только 1M записей за один раз, однако это берется весь день.Эффективное удаление SQL Server 2005
Q1: Каков оптимальный способ удаления большого количества данных из таблицы, сохранения таблицы в Интернете и минимального воздействия на другие ресурсы, которые должны использовать эту таблицу в MS SQL Server 2005?
Q2: Есть ли способ реализовать блокировку отдельных строк (а не блокировку таблицы) в SQL Server, как в Oracle? (Примечание, отвечающее на это, может ответить на вопрос Q1).
A2: Так как @Remus Rusanu сообщил мне, что есть способ сделать row level locking с удалением.
Мне это нравится. В следующий раз, когда я должен сделать что-то вроде этого, я должен сделать это. –
Первоначально мы планировали перенести записи на новую таблицу. Однако тесты показали, что время перестроить индексы с нуля будет слишком высоким. –
Я делаю это регулярно, и это работает как шарм. Гораздо лучше, чем удаление большого количества строк. –