Лучшая стратегия для гигантской массовой вставки SQL Server — высокочастотная или низкочастотная

Лучше загружать N пакетов данных по 1 МБ (высокая частота) или 1 пакет данных X МБ (низкая частота)?

Проблема для меня в том, что синтаксический анализ и обработка данных также требуют времени, поэтому кажется, что параллельный синтаксический анализ, обработка и сохранение гигантского набора данных — не лучший подход, поскольку он приводит к высокочастотным массовым вставкам.

Скорее, синтаксический анализ и обработка должны накапливаться в большой пакет размера X, а затем отправлять (параллельную) массовую вставку этого пакета?

Это правильно? Если да, то каков рекомендуемый размер X ?


person Herman Schoenfeld    schedule 08.12.2015    source источник
comment
без конкретных данных и вариантов использования вопрос не имеет особого смысла. Только с конкретными данными (и спецификациями платформы) можно сделать метрики и принять конкретное решение.   -  person Nikos M.    schedule 08.12.2015
comment
Высокая частота для больших партий, наверное, всегда лучшее решение. Огромная операция может привести к огромной ошибке, которая похоронит все. Кроме того, для работы требуется больше времени, больше возможностей для ошибки сети или ввода-вывода.   -  person Smileek    schedule 08.12.2015


Ответы (1)


Оптимальный размер батча зависит от вашего железа, какой обработки вы делаете, объема имеющихся данных. Только ты можешь сказать.

Умный алгоритм попытается вставить несколько пакетов размера N и измерить производительность, затем несколько пакетов размера 2*N, затем несколько пакетов размера 4*N и т. д., пока производительность не начнет ухудшаться, и автоматически установит оптимальный размер пакета.

По мере роста базы данных будет меняться и оптимальный размер пакета, поэтому алгоритм должен со временем корректироваться.

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

person Vladimir Baranov    schedule 08.12.2015