| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/05/2008 20:02:39
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Tenho um aplicativo que vai ao banco pega as informções e a envia por socket.
Quando o aplicativo vai ao banco ele executa uma query que demora uns 5 minutos, e conforme o banco vai almentando a query vai ficando mais demorada, então, pensei em fazer um buffer.
Neste buffer ficariam as linhas do banco de dados que seriam acessadas por um outro objeto e assim enviaria as informações por socket, conforme as linhas forem sendo enviadas, elas iriam ser retiradas do buffer podendo assim ser populado novamente, acho que desta maneira iria ter um ganho no performace do aplicativo.
Agora a dúvida, alguém sabe algum objeto ou uma api que eu possa usar para aplicar esta solução ou vou ter que fazer na mão?
|
www.bau-de-dev.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/05/2008 20:58:12
|
rafaelglauber
GUJ Master
![[Avatar]](/images/avatar/e9abec5e32203998211653b45023be1c.jpeg)
Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline
|
Já pensou na possibilidade de otimizar a consulta? Já pediu para algum DBA verificar sua consulta? Quase sempre os programadores criam consultas horriveis com joins sem necessidade (veja a possibilidade de criar indices ou mesmo utiliza-los corretamente)...Bem, eu iria primeiro por esse lado, para depois pensar em outras possibilidades mirabolantes.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/05/2008 00:33:25
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Jedi_FeniX wrote:Tenho um aplicativo que vai ao banco pega as informções e a envia por socket.
Quando o aplicativo vai ao banco ele executa uma query que demora uns 5 minutos, e conforme o banco vai almentando a query vai ficando mais demorada, então, pensei em fazer um buffer....
Ou você tem uma quantidade absurdamente grande de dados para um hardware muito mas muito modesto ou sua consulta está péssima( põe péssima nisso ). Reavalie sua consulta ou repense todo o seu negócio.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/05/2008 08:22:34
|
Zakim
JavaEvangelist
![[Avatar]](/images/avatar/e35d7a5768c4b85b4780384d55dc3620.jpg)
Membro desde: 21/07/2005 09:25:24
Mensagens: 482
Localização: Cuiabá - MT
Offline
|
Teste sua consulta diretamente no banco atraves de uma ferramenta visual com o MySQL Front e etc... Se demorar la tbm.
|
http://zakim.blogspot.com - Zakim
Sun Certified Java Programmer
Comece pequeno, pense grande e cresça rápido! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2008 10:04:03
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Fiz a consulta no EMS e ela me retornou o resultado em 17seg. Para fazer a consulta no aplicativo java eu uso JDBC, porque, está diferença de tempo?
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2008 10:46:06
|
Tecnoage
GUJ Master
Membro desde: 13/03/2005 23:18:07
Mensagens: 1723
Localização: SP
Offline
|
não... com certeza alguma coisa está errado ae rs
|
Arquiteto de Software
Sysped Solutions
R3 SAP CAT-83, NF-e, ECD, EFD, CT-e, MANAD, IN86
www.sysped.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2008 11:50:52
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Pronto erro arrumado, agora a procedure demora mais ou menos uns 6seg....
Aproveitando tenho uma outra dúvida, eu abro umas 200 threads para enviar algumas informações por socket e eu uso o Log4J para ver o log das threads que eu criei.
No log eu vejo que uma thread demora mais ou menos 5seg ou até menos, sendo que ela envia os dados e atualiza alguns dados no banco, sendo que quando vou olhar na outra máquina que chega as informações, não chega 200 de uma vez, chega umas 20, 15 e etc.
Alguém saberia dizer o que pode estar acotecendo?
Eu uso a ExecutorService para criar o pool de thread.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2008 13:47:20
|
Guitar_Men
JavaEvangelist
![[Avatar]](/images/avatar/40dcade0986efb728091792e3c538e6c.jpg)
Membro desde: 21/02/2008 10:01:31
Mensagens: 463
Offline
|
Indices são uma faca de dois gumes... Por um lado otimiza a sua consulta mas as operações de inserção, atualização se tornam um problema... Provavelmente apenas otimizando a sua consulta ja seja o suficiente, aliado a um hardware de grande porte para hospedar esse BD, lhe garanto que vc terá ótimos resultados....
|
|
|
|
 |
|
|