Abertura Lenta na Tabela com ADO
Olá amigos, tou fazendo uns testes de importação de fotos com o access(2000 ou XP) usando QueryADO, aí verifiquei os sequintes detalhes:
Qnd a tb tah vazia tudo ocorre normalmente, mas a medida q eu vou inserindo mais fotos, a aplicação vai ficando mais lente. O pior é q qnd eu fecho a aplicação e abro de novo ela demora a ser mostrada(pq é no momento do OnCreate ou OnShow q eu abro a tabela).
Aí fiz o seguinte teste q a principio poderia cair mais a performance:
Utilizei BDE, isso mesmo. Criei um drive ODBC para o Access 2000, já q o bde naum tem drive nativo pro access2000 só pro 97, e aplicação ficou mais rápida do q o ADO, não só na importação como tb na abertura da tabela, mesmo qnd ela está com muitos registros já inclusos.
Como isso é possivel? Visto q a aplicação passa por duas camadas intermediarias (DBE e ODBC) pra chegar no banco, e no ADO o acesso é direto com o JET. Alguem sabe explicar pq isso acontece? Teria alguma propriedade do ADO pra melhorar essa Performance?
Qnd a tb tah vazia tudo ocorre normalmente, mas a medida q eu vou inserindo mais fotos, a aplicação vai ficando mais lente. O pior é q qnd eu fecho a aplicação e abro de novo ela demora a ser mostrada(pq é no momento do OnCreate ou OnShow q eu abro a tabela).
Aí fiz o seguinte teste q a principio poderia cair mais a performance:
Utilizei BDE, isso mesmo. Criei um drive ODBC para o Access 2000, já q o bde naum tem drive nativo pro access2000 só pro 97, e aplicação ficou mais rápida do q o ADO, não só na importação como tb na abertura da tabela, mesmo qnd ela está com muitos registros já inclusos.
Como isso é possivel? Visto q a aplicação passa por duas camadas intermediarias (DBE e ODBC) pra chegar no banco, e no ADO o acesso é direto com o JET. Alguem sabe explicar pq isso acontece? Teria alguma propriedade do ADO pra melhorar essa Performance?
Pabhen
Curtidas 0
Respostas
Walace
30/07/2004
Sou novato em delphi, mas tive um problema parecido com o seu e o pessoal do fórum me ´induziu´ a usar query no lugar de table.
GOSTEI 0
Pabhen
30/07/2004
Sou novato em delphi, mas tive um problema parecido com o seu e o pessoal do fórum me ´induziu´ a usar query no lugar de table.
mas eu tou usando query
GOSTEI 0
Walace
30/07/2004
...pq é no momento do OnCreate ou OnShow q eu abro a tabela...
então qdo vc abrir esta tabela (query) faz ela tentar ler um registro que não existe, por exemplo:
select * from cliente where codigo = 0
Como não vai existir um codigo 0 ela vai carregar da forma que vc quer.
GOSTEI 0
Pabhen
30/07/2004
então qdo vc abrir esta tabela (query) faz ela tentar ler um registro que não existe, por exemplo:
Como não vai existir um codigo 0 ela vai carregar da forma que vc quer.
select * from cliente where codigo = 0
Mas a questão naum é só essa:
O q eu keria saber mesmo é pq com o bde acessando o odbc é mais rápido do q usar o ado?
GOSTEI 0
Bon Jovi
30/07/2004
Pode ser porque dependendo de configurações do Cursor, ADO traz de uma vez todo o conteúdo solicitado para a máquina cliente, criando um cache local em disco. A configuração default é CursorLocation = clUseClient, que faz isso q eu comentei. Outra opção é clUseServer, não muito recomendado, só pra casos q realmente seja necessário.
Já BDE deve pegar páginas de registros conforme for sendo navegado o DataSet.
Mas enfim, como os colegas acima já comentaram, não tem pq ficar abrindo toda a tabela, isso não é pratico em sistemas cliente/servidor.
Já BDE deve pegar páginas de registros conforme for sendo navegado o DataSet.
Mas enfim, como os colegas acima já comentaram, não tem pq ficar abrindo toda a tabela, isso não é pratico em sistemas cliente/servidor.
GOSTEI 0
Pabhen
30/07/2004
[quote:031297c648=´Bon Jovi´]Pode ser porque dependendo de configurações do Cursor, ADO traz de uma vez todo o conteúdo solicitado para a máquina cliente, criando um cache local em disco. A configuração default é CursorLocation = clUseClient, que faz isso q eu comentei. Outra opção é clUseServer, não muito recomendado, só pra casos q realmente seja necessário.
Já BDE deve pegar páginas de registros conforme for sendo navegado o DataSet.
Mas enfim, como os colegas acima já comentaram, não tem pq ficar abrindo toda a tabela, isso não é pratico em sistemas cliente/servidor.[/quote:031297c648]
Vlw pela explicação, deve ser isso mesmo
Já BDE deve pegar páginas de registros conforme for sendo navegado o DataSet.
Mas enfim, como os colegas acima já comentaram, não tem pq ficar abrindo toda a tabela, isso não é pratico em sistemas cliente/servidor.[/quote:031297c648]
Vlw pela explicação, deve ser isso mesmo
GOSTEI 0