Tive uma idéia brilhante ontem (que com certeza não é minha).
Quando precisamos atualizar um banco de dados muito grande, passamos por um problema: tempo. Rodamos um update e esperamos uma vida pra obter resposta. Fora quando o banco não cai, ou tinha problema e corrompe, etc. Os ossos quebrados do ofício.
Mas será que é possível atualizar de poucos em poucos registros, aumentando assim a velocidade e diminuindo o perigo de inconsistência?
Há algum tempo atrás desenvolvi uma classe de pool de thread (p.s: thread é um processo do programa que roda em paralelo com ele. Pool de thread é um conjunto de threads) que permite que eu passe um procedimento e ela cria uma série de threads, dividindo a tarefa, e executando mais rápido.
Essa classe foi pensada pra ser utilizada com relatórios muito pesados, e faria o seguinte: numa das threads retorna os registros, por exemplo, de 1 a 100. Em outra thread, do 101 a 200. E assim por diante. No final, todos os registros seriam juntados na máquina do usuário e o relatório seria montado.
Acredite, é muito mais rápido para o banco executar pequenos selects ou updates do que um monstro de uma vez.
Mas queria algumas idéias, de como começar, ou se é útil. Além disso, outras aplicações para o pool de threads.
Não vou postar aqui o código, mas quem quiser, só me dá um toque que eu mando.
E se tiver alguma correção, ai é legal postar aqui.
Até
Mostrando postagens com marcador pool. Mostrar todas as postagens
Mostrando postagens com marcador pool. Mostrar todas as postagens
sexta-feira, 28 de março de 2008
Assinar:
Postagens (Atom)