Perda de desempenho

5 respostas
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,

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?

5 Respostas

rmendes08

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.

adrielcafe

Tenta chamar o Garbage Collector de vez em quando:

E

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,

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

paulo.ubuntu

entanglement:
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,

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

Corretíssimo!

fabiofalci

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

Criado 1 de setembro de 2011
Ultima resposta 1 de set. de 2011
Respostas 5
Participantes 6