none
Inserir dados em massa RRS feed

  • Pergunta

  • Olá a todos!

    Estou com um problema referente à inserção de dados em massa em aplicação Windows Forms e banco de dados Oracle.

    É uma aplicação simples onde o intuito é enviar para o banco de dados tudo o que está na DataGridView (considerando que já tenho a conexão com o banco de dados Oracle e todos os dados estão tratados e prontos para serem enviados).

    Tenho uma DataGridView com 10 colunas e 870k linhas aproximadamente, um botão para iniciar um laço de repetição.

    A cada 500 registros inseridos eu dou um commit, ou seja, faço o uso de uma transação e vou gravando lotes de 500 e se eventualmente der algum problema eu faço o rollback e outras tratativas para o caso.

    O problema que está acontecendo é: os primeiros 1500 registros estão sendo inseridos rapidamente, após isso percebo uma queda de velocidade. Não necessariamente 1500, mas quanto maior o valor de registros, menor é a velocidade do restante das linhas. Acompanhando esse for, na linha atual agora (21148), a velocidade está para 1 registro a cada 1 segundo... 

    A configuração do computador (processador AMD Ryzen 7 e 16GB RAM) e recursos do banco estão Ok.

    Consumo da aplicação é de 7% CPU e 1,4GB de memória RAM (normal)

    Estou usando backgroundWorker (consegui melhorar o desempenho usando esse recurso) e OracleConnection (System.Data.OracleClient) para fazer a conexão com Oracle.

    Alguém já passou por esse problema? Algum exemplo que eu possa fazer?

    Obrigado

    sexta-feira, 6 de março de 2020 00:33

Respostas

Todas as Respostas