Bug usando componentes IBX

01/12/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.


Nathaliasebben

Respostas

01/12/2005

Edilcimar

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


Responder Citar

01/12/2005

Nathaliasebben

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!


Responder Citar

01/12/2005

Edilcimar

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


Responder Citar

02/12/2005

Thomaz_prg

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.


Responder Citar

02/12/2005

Fabiobb

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...


Responder Citar