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