Desempenho do SqlBulkCopy
Eu estou trabalhando para aumentar o desempenho de cargas em massa; 100 de milhões de registros + diários.
Eu mudei isso para usar oIDatareader
interface em vez das tabelas de dados e obteve um aumento de desempenho notável (mais 500.000 registros por minuto). A configuração atual é:
IDatareader
interface.EntãoSqlBulkCopy
escreve para o servidorA maior parte do gargalo de desempenho está diretamente emSqlBulkCopy.WriteToServer
. Se eu unidade testar o processo até, mas excluindo apenas oWriteToServer
o processo retorna em aproximadamente 1 minuto.WriteToServer
está levando mais 15 minutos +. Para o teste de unidade, ele está na minha máquina local, portanto, a mesma unidade em que o banco de dados reside, portanto, não é necessário copiar os dados pela rede.
Eu estou usando uma tabela de heap (sem índices; cluster ou unclustered; eu tenho jogado em torno de vários tamanhos de lote sem grandes diferenças no desempenho).
Há uma necessidade de diminuir os tempos de carregamento, então espero que alguém possa agora extrair um pouco mais de sangue desse aumento.