Массовая вставка SQL Server — Должны ли быть разрешены другие вставки во время операции?

#sql-server #import #bulk

#sql-server #импорт #массовая

Вопрос:

У меня есть несколько экспортированных строк, которые я хочу импортировать в базу данных, которая в данный момент запущена. Должен ли я отключить приложение, которое взаимодействует с базой данных перед выполнением массовой вставки, чтобы BI был единственной выполняемой операцией?

Я предположил, что это было бы наилучшей практикой, но просто хотел уточнить у сообщества.

Большое спасибо!

Комментарии:

1. Зависит от того, чего вы пытаетесь достичь.

Ответ №1:

Обычно я бы не стал отключать какое-либо другое приложение, использующее базу данных. Для меня массовая загрузка — это просто еще один клиент базы данных, и на нее распространяются обычные механизмы параллелизма / изоляции.

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

Однако я всегда использую промежуточную таблицу для загрузки данных. После обработки, очистки, поиска ключей и т.д. Я бы сбросил данные в оперативную таблицу за одну атомарную операцию. Другими словами, я бы не стал смешивать массовую загрузку с другим доступом к таблице: я бы буферизовал массовую загрузку через промежуточную таблицу

Комментарии:

1. Спасибо за это. Просто небольшой вопрос, какой метод вы бы использовали для перемещения данных из промежуточной таблицы? Вы бы использовали инструкцию insert с инструкцией select для перемещения данных из одной таблицы в другую?

2. @paul: да. Но это была бы одна ВСТАВКА: вся остальная работа была бы выполнена в промежуточной таблице (например, поиск ключей)