Fórum Delphi + Firebird em rede - melhorar desempenho. #499811
31/10/2014
0
Tenho um sistema para pequenas empresas, em delphi + firebird.
Hoje para me conectar no banco em rede, utilizo o caminho \\servidor\c:\sistema\dados\banco.fdb por exemplo.
A máquina "servidor" é uma máquina normal com windows, onde também é utilizado o sistema e aplicações normais como e-mail, internet, office, entre outros ...
Acontece que um cliente esta com 5 máquinas (1 caixa, 3 orçamentos e 1 escritório) e o acesso em rede esta ficando um pouco lento. A máquina em que esta o bd continua boa (pelo menos por enqto rs) ...
Gostaria de saber a opinião de vocês para melhorar o desempenho, e se a única saída é colocar um servidor dedicado (e se vale o custo-benefício), ou se tem alguma outra forma para tentar melhorar o desempenho ...
Agradeço a todos que puderem ajudar.
Abraços.
Luiz
Curtir tópico
+ 0Posts
01/11/2014
Edcp_poa
1 - verifica a infra da empresa, pode estar defasada, ou com problema em ponto especifico;
2 - verificar se as maquinas utilizam algum aplicativo que utiliza muita banda e esta interferindo em toda a rede (já tive caso de torrent interferindo na rede inteira);
3 - Geralmente o servidor acessa diretamente os arquivos, por isto não tem galho (não precisa da rede);
4 - tenta também o seguinte: aumentar o cache do banco, de forma a diminuir a leitura do disco;
5 - estuda a possibilidade de trocar para postgree, pois nunca ouvi falar bem do Firebird e nunca tive boas experiencias com ele. Mais tarde será fácil migrar o sistema para a nuvem.
Sucesso!
Gostei + 0
03/11/2014
Mauricio Rodrigues
Está mandando as tabelas aberta ou fechadas ?
Está fazendo uso view ?
Estava com mesmo problemas 5 maquinas e lento, resolvi o problema mandando as tabelas fechadas e abrindo só mente quando for usar. minhas view só traz os resultados quando tem tem os dados em todas as tabelas que ela usa.. além disso não trago todos os registro para memória.
Verifique se o banco não está com lixo.
eu criei um bat para fazer isto
path=%path%;C:\Arquivos de programas\Firebird\Firebird_2_1\bin
SET ISC_USER=sysdba
SET ISC_password=masterkey
gfix -c -full teste.gdb
pause
gfix -mend -full -ignore teste.gdb
pause
gfix -c -full teste.gdb
pause
gbak -backup -v -ignore teste.gdb micro.gbk
pause
gbak -create -inactive -one_at_a_time micro.gbk novo.gdb
pause
com isto ele limpa o banco e reduz o tamanho.
Gostei + 0
03/11/2014
Mauricio Rodrigues
Está mandando as tabelas aberta ou fechadas ?
Está fazendo uso view ?
Estava com mesmo problemas 5 maquinas e lento, resolvi o problema mandando as tabelas fechadas e abrindo só mente quando for usar. minhas view só traz os resultados quando tem tem os dados em todas as tabelas que ela usa.. além disso não trago todos os registro para memória.
Verifique se o banco não está com lixo.
eu criei um bat para fazer isto
path=%path%;C:\Arquivos de programas\Firebird\Firebird_2_1\bin
SET ISC_USER=sysdba
SET ISC_password=masterkey
gfix -c -full teste.gdb
pause
gfix -mend -full -ignore teste.gdb
pause
gfix -c -full teste.gdb
pause
gbak -backup -v -ignore teste.gdb micro.gbk
pause
gbak -create -inactive -one_at_a_time micro.gbk novo.gdb
pause
com isto ele limpa o banco e reduz o tamanho.
Gostei + 0
03/11/2014
Mauricio Rodrigues
Gostei + 0
03/11/2014
Luiz
* Não sei se já não seria interessante, deixar apenas 1 máquina para o servidor e para o banco de dados ..
Mauricio, obrigado pela resposta, uso no "super" que vem como padrão já na instalação, mas na verdade não sei a diferença entre um e outro ...
Quanto as tabelas, elas vão fechadas, mas por exemplo, no cadastro de produto, onde tem em torno de 10 mil itens, você já sente a demora de alguns segundos até abrir a tabela ... (pela rede, pela máquina onde esta o banco é mais rápido).
Quanto ao bat vou fazer um teste para ver se ajuda em alguma coisa ...
Quanto ao firebird, já penso em estudar a troca, mas não sei se compensa ou não, até hoje sempre me serviu bem, mas não sei se agora que o banco esta ficando mais carregado, se eu trocar por um mysql ou postgree posso ganhar no desempenho ... se ganhar no desempenho é uma opção.
Gostei + 0
03/11/2014
Raylan Zibel
5 máquinas pra começar a ficar lento, não creio que seja só problema de infra...
Gostei + 0
03/11/2014
Luiz
Realmente tenho que dar uma revisada no sql, mas acredito não ser apenas este o problema que eu quis dizer (claro que uma consulta de 10 mil itens irá demorar mais do que uma consulta de 100 itens ou nenhum item). O que eu quis dizer com o cadastro de produtos, é que a diferença é grande de quando eu abro o cadastro quando o sistema esta na mesma máquina que esta no banco de dados para quando o sistema esta em rede.
Mas a lentidão também ocorre, por exemplo, na hora de passar um orçamento em uma máquina da rede. No orçamento eu tenho apenas consultas em pontos específicos, como pesquisa de itens, pesquisa de vendedores, mas não é aí que esta o problema, você sente a diferença mesmo sem utilizar essas consultas (por exemplo no insert de um item ou no update no final do orçamento), e nos sql eu trago somente os campos que vou utilizar, e não utilizo o select * ...
Gostei + 0
03/11/2014
Eduardo Silva.
Qual o componente de acesso está usando, DBExpress ?
A Base foi criada com a fbclient.dll?
Qual versão do Windows está usando no Servidor e nas Estações?
Está compartilhando o executável na rede ou instalou em cada maquina?
A rede está em TCP/IP pura?
enfim..
Envie mais detalhes para que possamos ajuda-lo.
Eduardo Belo
Gostei + 0
03/11/2014
Raylan Zibel
Gostei + 0
05/11/2014
Luiz
Qual a versão do Firebird e do Delphi que está utilizando?
Qual o componente de acesso está usando, DBExpress ?
Firebird esta na ultima versão, 2.5.3 -
O sistema esta em Delphi 7, com Interbase - Já converti boa parte (pois estou aproveitando para melhorar alguns processos) para o Delphi XE 6 com DBExpress.
A Base foi criada com a fbclient.dll? Sim.
Qual versão do Windows está usando no Servidor e nas Estações? Todos são windows 7.
Está compartilhando o executável na rede ou instalou em cada maquina? instalei em cada máquina.
A rede está em TCP/IP pura? sim, dhcp - e todas as máquinas estão com cabo de rede.
Raylan, vou tentar fazer esse teste colocar um HD na maquina do caixa e deixar somente para o banco de dados ...
Obrigado pelos conselhos pessoal!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)