Оптимизация производительности BCP для данных BLOB

13

Я занимаюсь планированием оперативной миграции базы данных объемом 2 ТБ в многораздельные таблицы. В широком смысле система представляет собой хранилище документов, при этом большая часть пространства выделяется для больших объектов размером от 50 до 500 КБ, с небольшим процентом в диапазоне от 500 КБ до 1 МБ. Часть миграции будет включать данные BCPing из старой базы данных в новую.

BCP является предпочтительным подходом, поскольку текущее / историческое разделение данных позволяет извлекать более старые данные поэтапно (в течение более тихих периодов) до окончательного переключения, сводя к минимуму влияние на работающую систему. Объем данных и доступность хранилища не позволяют перестроить на месте схему разделов .

Я подозреваю, что может быть некоторый выигрыш в производительности при экспериментировании с KILOBYTES_PER_BATCH, а не с ROWS_PER_BATCH, из-за содержимого BLOB. В документации BCP предполагается, что SQL может оптимизировать операции на основе этого значения.

Чего я не могу найти, так это какого-либо руководства о природе этих оптимизаций или о том, с чего начать тестирование. В отсутствие предложений я попробую начать с коротких пробежек на границах 4/8/16/32/64 МБ.

Вероятно, выигрывают от изменения размера пакета (параметр BCP -a, а не настройка уровня сервера), но я склонен довести это значение до 65535, если у кого-то нет более формального подхода.

Марк Стори-Смит
источник

Ответы:

12

Это не прямой ответ на ваш вопрос, но есть несколько статей, которые вы могли бы прочитать, прочитав их (если вы не нашли их первыми :-)). Они о загрузке большого количества данных с использованием bcp / массового копирования. Я прочитал их все и не нашел ничего подробного о KILOBYTES_PER_BATCH, все они используют ROWS_PER_BATCH, но я уверен, что вы найдете другую полезную информацию.

и очевидные ссылки MSDN:

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

Мэриан
источник
Спасибо, Мариан, я добавила несколько новых находок из этого исчерпывающего списка. Как одноразовая задача, многие из пошаговых / уточняющих шагов не так полезны, но есть множество советов, которые я могу использовать.
Марк Стори-Смит
Да, я чувствую твои чувства, для меня тоже было одноразовое задание, и я нашла некоторые полезные вещи в списке. Это отличная задача, хотя :-). Вы также можете создать небольшое приложение .NET (если вы знакомы с .NET), как в другой статье Linchi Shea: Влияние на производительность: самый оптимальный скрипт вставки не может превзойти BulkCopy . Вы можете найти то же самое, что и он :-).
Мариан
Поскольку в дикой природе не существует каких-либо специальных инструкций для BLOB, я отмечаю ваш очень подробный ответ как принятый. Еще раз спасибо.
Марк Стори-Смит
Извините, я не мог вам больше помочь, но надеюсь, вы нашли в этом что-то полезное.
Мариан