| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2009 12:49:28
|
Link_pg
JavaEvangelist
![[Avatar]](/images/avatar/4cea2358d3cc5f8cd32397ca9bc51b94.jpg)
Membro desde: 28/04/2006 00:17:38
Mensagens: 413
Localização: Praia Grande / São Paulo - SP
Offline
|
Olá!
Estou fazendo o parse de um arquivo de log e através de uma expressão regular, estou inserindo grupos da expressão em colunas de uma tabela no banco de dados. Cada linha no arquivo é um registro no banco. No começo a inserção é rápida, até mais ou menos uns 2000 registros, quando passa disso começa a ficar lento. Até uns 18000 é aceitavel, mas quando passa disso começa a ficar beem lento... o arquivo aqui tem por volta de 38000 linhas... alguém ai sabe algum macete para otimizar a leitura e a inserção no banco?
Abraços
|
Eduardo Felipe Vieira
Blog de Tecnologia!
Outro blog meu legal também mas não é de TI.
"Nós poderíamos ser muito melhores se não quiséssemos ser tão bons." |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2009 13:19:00
|
thiagoh
Entusiasta Java
![[Avatar]](/images/avatar/a40dd893c0c55a729d56d7b96c2d1963.jpg)
Membro desde: 30/04/2007 23:01:04
Mensagens: 18
Localização: Recife, PE
Offline
|
Amigo, o que muito provavelmente está acontecendo eh que voce esta entupindo a memória da maquina com dados.
Há difersas soluções, voce pode quebrar o montante de dados em arquivos menores e processá-los separadamente.
voce pode também fornecer mais memória para a aplicação, rodando sua aplicação num PC sem muitos processos para roubar memoria RAM. Mas esta solução não é das mais viáveis pois so vai protelar a falta de memória RAM.
Voce pode também otimizar as inserções no banco de dados, removendo o auto-commit simplesmente pondo um Begin; no inicio e um Commit; depois de um bolo de Insert Into. Isso vai agilizar bastante a sua aplicação.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2009 13:28:33
|
ignacio83
Java Ninja
![[Avatar]](/images/avatar/3d50a489984362c71713b9fd1cf79ef0.jpg)
Membro desde: 16/03/2007 10:46:06
Mensagens: 253
Localização: São Paulo
Offline
|
Se estiver utilizando hibernate ou JPA?
Se a resposta for sim, você pode fazer de n em n registros:
|
André de Fontana Ignacio |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2009 14:59:24
|
Link_pg
JavaEvangelist
![[Avatar]](/images/avatar/4cea2358d3cc5f8cd32397ca9bc51b94.jpg)
Membro desde: 28/04/2006 00:17:38
Mensagens: 413
Localização: Praia Grande / São Paulo - SP
Offline
|
No caso eu estou com o auto-commit false, e tenho um numero configurável de executeUpdate num arquivo de properties (Ex.: a cada 1000 linhas, executa um commit). O caso é que nem tudo estava sendo logado no textArea, e estava acontecendo um NumberFormatException que travava o processo e não estava sendo logado...
Obrigado!
|
Eduardo Felipe Vieira
Blog de Tecnologia!
Outro blog meu legal também mas não é de TI.
"Nós poderíamos ser muito melhores se não quiséssemos ser tão bons." |
|
|
 |
|
|