VB6 COM FIREBIRD = MUITO LENTO

MAURICIOZACCARO 03/05/2015 09:14:33
#446298
Bom Dia, gente lendo aqui entre prós e contras do Firebird já há alguns dias, resolvi então utilizá-lo, No entanto, estou enfrentando um problema MUITO MUITO chato. A lentidão do Firebird!!! Não sei se é normal mais vejam. Eu estava a fazer diversos testes e todas me retornavam resultados pouco interessantes, então resolvi testar uma [Ô]corrida[Ô] entre Firebird VS Access, fiz o seguinte:

OBS.: Ambos com Drive ODBC, conexão ADO e instruções SQL ( tudo igual, mudando apenas de banco pra banco )

Fiz um Banco em Access(.MDB) e um em Firebird ( .FDB ) com a tabela CIDADES, onde cadastrei todas as cidades do Brasil, cerca de 10.200 ( Dez mil e duzentos ) registros. Criei um formulário simples com 2 botões ( um pra carregar o Access e um para carregar o Firebird) e uma ListView, onde carregava as 10.200 cidades.

Com o Access ao clicar no botão, o Listview carregou em aproximadamente 1 (um) segundo, o que eu achei um bom resultado. Já com o Firebird, para se carregar todos os Dez mil e duzentos registros de cidades cadastradas no mesmo na Listview, o programa demorou aproximadamente 15 minutos. Isso mesmo que vocês leram, 15 minutos para se carregar meros 10 mil registros. Absurdo, sem nexo algum essa demora, visto que os drives são os mesmos, o computador , S.O, linguagem ( vb6 ), tipo de conexão, tudo, tudo e tudo são iguais. Fiz e refiz os testes com outros tipos de conexões diversas e diversas vezes, ainda assim os resultados foram sempre os mesmos, o Access em 1 segundo e o Firebird em 15 minutos ( de média ).

é isso gente, minha primeira impressão sobre o Firebird foi péssima. Gostaria que vocês me falassem ai, se é normal essa lentidão, se existe algo sobre ele que eu não saíba e que pode melhorar consideravelmente seu desempenho, porque, eu até gostei da facilidade de ingressar ele no setup, utilizando o IBExpert ficou fácil manusear o Banco e tudo mais, só que, é essa velocidade de [Ô]lesma[Ô] que é o problema. Se tiverem alguma luz, por favor, sou todo ouvido ( olhos ). No mas, Obrigado!
MARCELOKROL 03/05/2015 12:35:30
#446307
- primeiramente, use o provedor de dados do firebird: Provider for .NET , esqueça ODBC, utilize ele em últimos casos quando não tem mais recursos de conexão ou em um servidor on-line.
- cuide dos índices. Ao criar uma consulta sempre crie ela no ibexpert, pois ali você pode testar a velocidade e se esta tudo ok com os indices (performance analysis).
- outra coisa o usuário não vai olhar todas as cidades brasileiras na tela (e nem tem sentido querer olhar) filtre apenas as 30 ou 50 primeiras cidades e faça com que o usuário filtre o que ele quer.
- use se possivel a versão 2.5 do firebird, pois ela tem vários recursos novos. Se quiser se aventurar na 3.0 também já esta disponível mais creio que ela não é compatível com o windows XP (eu sei é velho, mais tenho muitos clientes que usam ele ainda e, não posso ficar perdendo clientes que não querem se atualizar).

No mais uso o firebird a mais de 6 anos e tenho muitos clientes com bases de dados enormes (300gb, 500gb e 700gb) com servidores dedicados rodando cadastros, atualizações, pdv, nf-e, OS, ordem de produção.
O firebird é muito diferente do access com muito mais recursos que ele.
MAURICIOZACCARO 03/05/2015 15:43:45
#446314
Primeiramente, obrigado por responder MARCELOKROL.

Bem, eu nunca havia mexido com Firebird ( o meu é 2.0.4), o pouco que li sempre vi o pessoal falando do ODBC pra ele por isso nem procurei outros ( erro meu eu sei ), esse Provider For .NET ( tô vendo esse [Ô]ponto[Ô] ) é compatível com VB6? Esse [Ô].NET[Ô] me deixa [Ô]encafifado[Ô].
Outra coisa, em relação as cidades, sim eu sei, ninguém vai abrir todas elas, eu simplesmente queria testar a velocidade que o Access faz o processo com a velocidade que o Firebird iria fazer, aos meus olhos foi péssimo. Até porque em consultas simples, ( retornar um cliente qualquer em pouco mais de 1000 clientes ), no Access não importa se é ADO, DAO, com SQL ou sem ele retorna em [Ô] um piscar de olhos[Ô] no Firebird está me dando o retorno entre 3 e 4 segundos, isso com banco já aberto, se for abrir/fechar a cada instrução leva uns 8 segundos.
Em relação aos índices, os usava no Access ( realmente facilita as coisas ) e continuo os usando no Firebird.

Bem, vou ver esse Provider que você falou, fazer alguns testes etc... até porque não faz sentido algum essa lentidão toda. Por todos os relatos que já li a respeito de Firebird, Access, ProgreSQL etc.. foi pelo fato da velocidade que diziam ser boa, a facilidade e praticidade sendo apenas um único BD e claro, ser grátis, que eu o escolhi para substituir o Access.. Para quem ainda está [Ô]engatinhando[Ô], não vale a pena [Ô]correr[Ô] pro Oracle e SQL pago.

No fim, acho que preciso ler um pouco mais sobre o Firebird e o IBExpert ( não vi nem 1 terço de suas funções ) antes de decidir. Alguém tem alguma apostila, site, tutorial sei lá, algo específico ao Firebird e o IBExpert? Desde já, Obrigado.
MESTRE 04/05/2015 09:21:52
#446326
Eu recomendaria você mudar pra Post ou pro MySql..

dou manutenção em um sistema em VB6 usando Mysql .. a base aqui gira em torno de 200gb. e não fica lento

fica lento apenas devido a quantidade gigantesca de procedures que são executadas..
MARCELOKROL 04/05/2015 20:42:08
#446355
acredito que não exista ela pra vb6. Eu citei ele visto que não tinha lido o seu titulo direito, apenas vi que voce tinha postado no forum de VB.NET por isso referenciei ele pra você.
Creio que deve ter algo de errado mesmo pois essa lentidão não é normal do firebird. Já tive problemas com a lentidão do banco, mais foi só executar um backup e um restore da base de dados que o mesmo foi resolvido. Isso ocorre quando o banco de dados esta muito inchado principalmente nessa versão ai, devido muito DELETEs e INSERTs executas na base, o proprio Carlos Cantu recomendou isso em um forum uma vez que eu li não sei aonde (boa referencia).
Faça seu login para responder