Eu sou o processo de planejar a migração ao vivo de um banco de dados de 2 TB para tabelas particionadas. O sistema está falando amplamente de um repositório de documentos, sendo a maior parte do espaço alocado para LOBs entre 50kb e 500kb, com uma pequena porcentagem no intervalo de 500kb a 1MB. Parte da migração envolverá dados de BCP do banco de dados antigo para o novo.
O BCP é a abordagem preferida, pois a divisão atual / histórica nos dados permite extrair os dados mais antigos em etapas (durante períodos mais silenciosos) antes de uma troca final, minimizando o impacto no sistema ativo. O volume de dados e a disponibilidade de armazenamento impedem uma reconstrução no local para um esquema de partição .
Suspeito que talvez haja alguns ganhos de desempenho ao experimentar KILOBYTES_PER_BATCH em vez de ROWS_PER_BATCH, devido ao conteúdo do BLOB. É sugerido na documentação do BCP que o SQL pode otimizar as operações com base nesse valor.
O que não consigo encontrar é qualquer orientação sobre a natureza dessas otimizações ou por onde começar meus testes. Na ausência de sugestões, tentarei pequenas tiragens nos limites de 4/8/16/32 / 64mb para começar.
Provavelmente, existem alguns ganhos com a alteração do tamanho do pacote (parâmetro BCP -a, em vez da configuração no nível do servidor), mas estou inclinado a aumentar isso para o máximo de 65535, a menos que alguém tenha uma abordagem mais formulada.