Лучшая практика для архивации огромной таблицы более чем 1 000 000 000 строк

Я использую SQL Server 2005. Существует таблица журнала аудита, содержа более чем 1 000 000 000 строк. Я планирую заархивировать эту таблицу. Когда я делаю простой выбор с помощью nolock, Я могу все еще найти блокирование (вероятно, IO, блокирующийся с другим процессом?). Так есть ли какая-либо лучшая практика для этого вида ситуации?

8
задан developer.cyrus 2 March 2010 в 06:03
поделиться

3 ответа

Для такой большой таблицы вам может потребоваться найти эффективную стратегию сегментирования / разделения. Архивирование в этом смысле имеет тенденцию быть формой разбиения, но не очень хорошо, так как вы часто хотите запросить текущий и архивировать в любом случае. В худшем случае вы получите ВЫБОР над ОБЪЕДИНЕНИЕМ архивных и текущих таблиц, что хуже, чем если бы вы их вообще не разделяли.

Вам часто будет лучше, если вы найдете какие-то другие средства для разделения данных, скажем, по типу записи или чему-то еще. Но если вы собираетесь разделить его по дате, убедитесь, что вы не будете запрашивать архив + текущий набор данных.

Кроме того, SQL Server 2005+ по умолчанию не включает MVCC. Однако он может это сделать, если вы включите то, что MS называет изоляцией моментальных снимков. См. Сериализуемый и уровень изоляции моментальных снимков .

Эффект от не включения этого параметра состоит в том, что незафиксированный INSERT или UPDATE блокирует SELECT в другой транзакции до тех пор, пока первая транзакция не будет зафиксирована или откатится. Это может вызвать ненужные блокировки и ограничить масштабируемость.

4
ответ дан 5 December 2019 в 18:58
поделиться

Выбор сразу 1 миллиарда строк приведет к перегрузке сервера, как бы вы это ни делали.

Вместо этого делайте это партиями, скажем, по 1000 строк за раз. Инструмент bcp делает это автоматически. Или используйте SSIS для копирования данных в другую базу данных - это почти то же самое.

2
ответ дан 5 December 2019 в 18:58
поделиться

Создайте резервную копию базы данных и восстановите ее в месте архива.

3
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: