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 é:

Um leitor em cache personalizado para analisar os arquivos delimitados.Envolvendo o leitor de fluxo em um fluxo em buffer.Uma classe de leitor de objeto personalizado que enumera os objetos e implementa oIDatareader interface.EntãoSqlBulkCopy escreve para o servidor

A 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.

questionAnswers(1)

yourAnswerToTheQuestion