Я занимаюсь планированием оперативной миграции базы данных объемом 2 ТБ в многораздельные таблицы. В широком смысле система представляет собой хранилище документов, при этом большая часть пространства выделяется для больших объектов размером от 50 до 500 КБ, с небольшим процентом в диапазоне от 500 КБ до 1 МБ. Часть миграции будет включать данные BCPing из старой базы данных в новую.
BCP является предпочтительным подходом, поскольку текущее / историческое разделение данных позволяет извлекать более старые данные поэтапно (в течение более тихих периодов) до окончательного переключения, сводя к минимуму влияние на работающую систему. Объем данных и доступность хранилища не позволяют перестроить на месте схему разделов .
Я подозреваю, что может быть некоторый выигрыш в производительности при экспериментировании с KILOBYTES_PER_BATCH, а не с ROWS_PER_BATCH, из-за содержимого BLOB. В документации BCP предполагается, что SQL может оптимизировать операции на основе этого значения.
Чего я не могу найти, так это какого-либо руководства о природе этих оптимизаций или о том, с чего начать тестирование. В отсутствие предложений я попробую начать с коротких пробежек на границах 4/8/16/32/64 МБ.
Вероятно, выигрывают от изменения размера пакета (параметр BCP -a, а не настройка уровня сервера), но я склонен довести это значение до 65535, если у кого-то нет более формального подхода.