Aee. Só para avisar quando fui me logar deu uma exceção Broken PIPE, não lembro direito a exceção. Só fui no logar e deu a exceção java.net…
Bom eu gostaria de saber como eu posso otimizar mais inserções em meu banco de dados.
Bom eu estou fazendo um trabalho para a faculdade, e consiste em eu inserir 3 milhoes de registros.
1 milhão com Statement.
1 Milhão com Prepared
1 Milhão com batch.
Ta muitooooo lento essas inserções.
Primeiro tinha umas FK no banco arranquei tudo ganhei uma boa performance.
To pensando em tirar as ID e os autoincrement. Ai eu insiro mais rápido não insiro ?
Mas mesmo assim continua lerdo.
Então coloquei a cada 5 mil inserções na conexão um setAutoCommit(true); e logo depois setAutoCommit(false), denovo. Quando inicio a conexão eu já seto para false.
Com isso eu consegui inserir mais rápido com Statement do que com PreparedStatement, queria ter uma noção pq isso ?
Em torno de 200 milissegundos de vantagem do Statement para o PreparedStatement.
E outra coisa tem alguma outra forma de inserir mais rápido ainda ? algum outro macete que eu possa fazer para inserir mais rápido ?
Ressalto que tirar as FK deu um nivel de performance fenomenal, e ressalto que sei dos riscos que corro sem esta feature que o SGBD me oferece.
Mas no preparedStatement eu estou tendo problemas com o heap.
Se eu colocar o GC para passar a cada bloco de 5K eu acabo com este meu problema ? Tem como eu utilizar o mesmo PreparedStatement para eu inserir os 5K ?
Ressalto que não sei nada de banco de dados, e muito pouco de java…