BD - Muitos updates - Posso usuar threads?

4 respostas
N

Bom dia pessoal, estou com um problema numa aplicação web, onde estou tendo que fazer atualização em 79000 registros. Estava fazendo essas atualizações uma a uma através de uma iteração de uma coleção. Porém estava muito lento, demorando em média 10min ou mais. Tentei então fazer atualizações em batch, ou seja, a cada 1000 updates armazenados no lote, eu mandava executar o batch. Continuava lento. Fui diminuindo e aumentando o tamanho do lote, até conseguir o máximo de performance com 150 updates por lote, levando em média 4min. Esse tempo ainda é muito grande para o usuário. Alguém tem alguma idéia de como eu poderia ganhar performance com essas atualizações? Seria possível, usar uma thread que faça essa atualização em batch e o usuário continuar usando outros módulos da aplicação?

obrigado, abs

4 Respostas

_fs

Sim, você pode iniciar o processamento em outra thread, desta forma a requisição é retornada e o usuário pode continuar o trabalho.

Contudo tenha certeza de que estes updates não são necessários para a continuidade do trabalho do usuário.

Para executar em uma thread:

new Thread( new Runnable() {
    public void run() {
        iniciaUpdates();
    }
} ).start();
Luca

Olá

Há outro tópico igual. Porque isto?

[]s
Luca

N

com relação a ter dois tópicos com mesmo nome, desculpe, pois não sabia se colocava no java avançado e java web.

N

Bom dia LIPE, é possível aplicar essa sua rotina da thread numa aplicação web?
Como expliquei, tenho uma aplicação web que gera um grande volume de updates. A minha idéia era a rotina de updates ser uma thread que executa os updates. O usuário iria para outras telas e depois recebesse uma mensagem informando o fim do processamento. O fato da tela onde a thread é executada, ser fechada não fará com que o processamento da thread seja interrompido?

Criado 11 de outubro de 2006
Ultima resposta 17 de out. de 2006
Respostas 4
Participantes 3