Array
(
)

Bug usando componentes IBX

Nathaliasebben
   - 01 dez 2005

Caros amigos,

Gostaria de saber se alguém pode me auxiliar com meu problema envolvendo os componentes da paleta IBExpess.

Estamos testando o ganho de perfomance usando componentes nativos ao invez de usar o BDE como tradutor.

Constatamos que realmente a conexão e execução de procedimentos é bem mais rapida, porém quando tentamos ir direto ao fim de uma tabela o programa trava e o uso de CPU vai a 100¬. Constatamos também que a medida que varremos uma tabela com mais ou menos 2000 registros, a navegação vai ficando lenta a medida que avançamos para o fim da tabela.

Testei nos seguintes modos, e o bug ocorre sempre da mesma maneira: em mais de uma versão de Windows, nas versões 5, 6 e 7 do Delphi, em computadores PIII a PIV, banco de dados Interbase ou Firebird 1.0 a 1.5, com programas feitos por nós para testes ou com os exemplos do próprio Delphi.

Gostaria de saber se alguem conhece o porque da ocorrência deste erro, bem como uma solução ou uma alternativa para ganho de perfomance usando bando de dados Interbase ou Firebird.


Antecipo agradecimentos.

Nathalia Sebben.


Edilcimar
   - 01 dez 2005

como está sendo feita a varredura, com ou sem índice, qual o componente da palheta está usando, testando em rede ou não?


Nathaliasebben
   - 01 dez 2005

A varredura é feita através de um DBGRid, dando ctrl+end para ir até o final, onde o aplicativo trava, ou através do componente DBNavigator, indo até o ultimo registro.

Não estamos usando indices, somente o acesso direto a tabela.

A aplicação não está em rede. O teste é local.

Testei os componentes IBTable e IBDataSet, e usei também, os componentes IBDatabase, IBTransaction, e um Datasource.

Obrigada!


Edilcimar
   - 01 dez 2005

coloque um índice para ver se melhora, eu tenho um banco com + de 10000 e não é tão lento, apesar de que sempre que mando para o último, ele leva alguns segundos


Thomaz_prg
   - 02 dez 2005

Além da criação de índices, sugiro que utilize o Firebird 1.5.2 (que é estável), e componentes do tipo MDO,IBO, ZEOS... que são totalmente compatíveis com o Firebird (acima de 1.5, coisa que o IBX - Palheta Interbase - não é). Se usar IBO (creio que o melhor deles) terá um ótimo desempenho, porém é pago. Já MDO e Zeos são Free (e Open), sendo o MDO produto nacional. Mas se busca realmente aumentar a performance, dê uma pesquisada sobre os componentes FIB+ (FibPlus) que também não são Free, porém, dizem ser os mais rápidos no acesso ao Firebird.


Fabiobb
   - 02 dez 2005

Tudo bem ?
É o seguinte... não é bug do componente... é lógica...
Se você está no primeiro registro... e quer ir pro registro 10000 o que o componente faz...
Ele vai carregando cada registro do banco até achar a opção que você quer...
O certo seria tu criar um critério de seleção no teu sql...
Banco de dados hoje em dia para acesso não funcionam como as tabelas de antigamente... paradox quando tu ia para o último ele buscava perfeitamente... hoje em dia quando tu quer navegar ele vai registro por registro...

espero que tenha sido útil...