Bloco de inserção, jdbc

0 respostas
R

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…

Criado 14 de abril de 2009
Respostas 0
Participantes 1