ECO III performance
Bom dia!
Estou desenvolvendo uma aplicação no delphi 2006 utilizando ECO III com Sql Server para uma aplicação ASPNET. Uso os componentes de persistencia e conecxão do banco de dados PersistenceMapperBdp e BdpConnection.
Essa aplicação tem sido desenvolvida há 1 ano, e finalmente quando fiz os testes final de carga de dados, fiquei bastante preoculpado, pois inseri 200.000 registro em uma tabela simples ´Classe´, e quando fui efetuar uma consulta do tipo ´TPessoa.allInstances->select(Nome=´jose´)´, essa consulta demorou cerca de 15 segundos, e isso inviabilizaria a minha aplicação.
Fiz o mesmo teste sem usar a OCL do ECO III, fazendo um acesso direto ao banco de dados via componentes BdpConnection e BdpDataAdapter, e a consulta foi instantânea.
Utilizo um notebook toshiba core 2 duo com 2GB de ram, e sinceramente não sei o que fazer pois toda a minha aplicação se sustenta em cima do ECO III, se alguém já passou por isso gostaria muito de houvir a sua opinião ou se possível a solução desse problema.
um abraço
Roberto Filho
Estou desenvolvendo uma aplicação no delphi 2006 utilizando ECO III com Sql Server para uma aplicação ASPNET. Uso os componentes de persistencia e conecxão do banco de dados PersistenceMapperBdp e BdpConnection.
Essa aplicação tem sido desenvolvida há 1 ano, e finalmente quando fiz os testes final de carga de dados, fiquei bastante preoculpado, pois inseri 200.000 registro em uma tabela simples ´Classe´, e quando fui efetuar uma consulta do tipo ´TPessoa.allInstances->select(Nome=´jose´)´, essa consulta demorou cerca de 15 segundos, e isso inviabilizaria a minha aplicação.
Fiz o mesmo teste sem usar a OCL do ECO III, fazendo um acesso direto ao banco de dados via componentes BdpConnection e BdpDataAdapter, e a consulta foi instantânea.
Utilizo um notebook toshiba core 2 duo com 2GB de ram, e sinceramente não sei o que fazer pois toda a minha aplicação se sustenta em cima do ECO III, se alguém já passou por isso gostaria muito de houvir a sua opinião ou se possível a solução desse problema.
um abraço
Roberto Filho
Robertofilho
Curtidas 0
Respostas
Robertofilho
08/09/2007
Olá Srs.
Após varios testes com cargas de dados com até 1 milhao de registro em uma tabela. eu concli que:
O eco é muito bom para tabalhar com objetos localizados atraves da funcao objectforid(), e NAO deve se usar a OCL language.. do tipo TPesso.AllInstances... pois vc sobrecarrega a memoria da sua maquina e a consulta é muito lenta.. para contornar esse problema vc deve consultar diretamente o banco de daados via SQL.. e assim tudo fica bonito
espero ter ajudado com essa conclusao
Após varios testes com cargas de dados com até 1 milhao de registro em uma tabela. eu concli que:
O eco é muito bom para tabalhar com objetos localizados atraves da funcao objectforid(), e NAO deve se usar a OCL language.. do tipo TPesso.AllInstances... pois vc sobrecarrega a memoria da sua maquina e a consulta é muito lenta.. para contornar esse problema vc deve consultar diretamente o banco de daados via SQL.. e assim tudo fica bonito
espero ter ajudado com essa conclusao
GOSTEI 0
Brjedi
08/09/2007
Quando se usa <classe>.allInstances é o mesmo que fazer SELECT * FROM <tabela>.
Tenho uma aplicação desenvolvida em ECO III (que aliás será mostrada na Borcon 2007) que tem classes/tabelas com mais de 20.000 registros. Não tive problemas de performance, mas foi necessário criar alguns indices ´na mão´ para consulta ficasse mais rápida.
Nos vemos na Borcon 2007
[]s,
Jorge Bublitz
Tenho uma aplicação desenvolvida em ECO III (que aliás será mostrada na Borcon 2007) que tem classes/tabelas com mais de 20.000 registros. Não tive problemas de performance, mas foi necessário criar alguns indices ´na mão´ para consulta ficasse mais rápida.
Nos vemos na Borcon 2007
[]s,
Jorge Bublitz
GOSTEI 0
Robertofilho
08/09/2007
Ola Amigo!
acho que vc nao entendeu se eu fizer uma consulta em uma base de dados de um milhao de registros via ocl = TPessoa.alinstances->select(nome=´roberto´).. essa consulta vai demorar 1 minuto para ser retornada, se eu e com um consumo enorme de memoria ram. e se e fizer a mesma consulta direto no bd com sql = select * from tpessoa where nome=´roberto´ ela me retorna em 1 segundo com pouquissimo consumo de memoria. Concluindo.. se vc pretende fazer uma aplicacao comercial para uma empresa de médio porte vc certamente terá porblemas se usar a OCL. Eu nao sei como os engenheiros da borland deixaram passar isso...
um abraço
roberto
acho que vc nao entendeu se eu fizer uma consulta em uma base de dados de um milhao de registros via ocl = TPessoa.alinstances->select(nome=´roberto´).. essa consulta vai demorar 1 minuto para ser retornada, se eu e com um consumo enorme de memoria ram. e se e fizer a mesma consulta direto no bd com sql = select * from tpessoa where nome=´roberto´ ela me retorna em 1 segundo com pouquissimo consumo de memoria. Concluindo.. se vc pretende fazer uma aplicacao comercial para uma empresa de médio porte vc certamente terá porblemas se usar a OCL. Eu nao sei como os engenheiros da borland deixaram passar isso...
um abraço
roberto
GOSTEI 0