Otimização de parse de log  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Link_pg
JavaEvangelist
[Avatar]

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."
[Email] [WWW] [MSN]
thiagoh
Entusiasta Java
[Avatar]

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.

[WWW]
ignacio83
Java Ninja
[Avatar]

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
[MSN]
Link_pg
JavaEvangelist
[Avatar]

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."
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team