Perda de desempenho

Bom dia a todos,

estou desenvolvendo uma aplicação, que importa dados(produtos) de um arquivo “.txt” e persiste em um banco de dados,

estou trabalhando em uma base de mais de 5mil produtos,

oque está acontecendo eh que a medida que o programa vai inserindo com o passar do tempo as inserções vão ficando mais lentas,

imprimi o time a cada 100 inserções e observei que começa com 20seg depois 30seg e por ai vai parei quando ja tava levenado 2 minutos para inserir 100produtos.

já coloquei o flush() de tempo em tempo mas não deu resultado

                entityManager.flush();

alguma sugestão?

Somente com base nisso não dá pra saber o que acontece. O que você está usando ? JPA ou JDBC puro ? Código ajuda também.

Tenta chamar o Garbage Collector de vez em quando:

[quote=markinlelo]Bom dia a todos,

estou desenvolvendo uma aplicação, que importa dados(produtos) de um arquivo “.txt” e persiste em um banco de dados,

estou trabalhando em uma base de mais de 5mil produtos,

[/quote]

5 mil produtos é uma base minúscula, mas qualquer “bulk insert” não deveria ser feito com JPA, ou mesmo com JDBC, mas normalmente com alguma ferramenta de “bulk insert” do seu banco. O “System.gc()” não vai resolver seu problema, porque essa demora é do banco.

Um exemplo do que se deve fazer em Oracle: http://www.dbspecialists.com/files/presentations/load_faster.html
Um exemplo do que se deve fazer em MySQL: http://www.roseindia.net/sql/mysql-example/loader-tutorial.shtml

[quote=entanglement][quote=markinlelo]Bom dia a todos,

estou desenvolvendo uma aplicação, que importa dados(produtos) de um arquivo “.txt” e persiste em um banco de dados,

estou trabalhando em uma base de mais de 5mil produtos,

[/quote]

5 mil produtos é uma base minúscula, mas qualquer “bulk insert” não deveria ser feito com JPA, ou mesmo com JDBC, mas normalmente com alguma ferramenta de “bulk insert” do seu banco. O “System.gc()” não vai resolver seu problema, porque essa demora é do banco.

Um exemplo do que se deve fazer em Oracle: http://www.dbspecialists.com/files/presentations/load_faster.html
Um exemplo do que se deve fazer em MySQL: http://www.roseindia.net/sql/mysql-example/loader-tutorial.shtml

[/quote]

Corretíssimo!

Aqui há algumas dicas se estiver usando hibernate.
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/batch.html