GARANTIR DESCONTO

Fórum Delphi + Firebird em rede - melhorar desempenho. #499811

31/10/2014

0

Boa tarde,

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

Luiz

Responder

Posts

01/11/2014

Edcp_poa

Bom dia Luiz.

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!
Responder

Gostei + 0

03/11/2014

Mauricio Rodrigues

Vc está usando firebird como servidor clasico ou super ?

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

Gostei + 0

03/11/2014

Mauricio Rodrigues

Vc está usando firebird como servidor clasico ou super ?

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

Gostei + 0

03/11/2014

Mauricio Rodrigues

quando servidor nas nuvens, não pode esquecer se a internet a empresa for lenta... a dor de cabeça vai ser maior ainda.
Responder

Gostei + 0

03/11/2014

Luiz

Edcp_poa, obrigado pelas dicas .. quando a infra realmente não é das melhores, até a máquina que uso de servidor é um i3 .. e as maquinas clientes que acessam são core 2 duo .. todos com windows ... enfim, não tenho um servidor apenas para o banco de dados, inclusive a máquina que é o servidor é também um caixa, onde passam-se as vendas, responde-se e-mails, e usa-se a internet. É orientado para não utilizar outras coisas, mas nunca se sabe.
* 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.
Responder

Gostei + 0

03/11/2014

Raylan Zibel

Faça uma revisão nos seus SQLs. Já vi gente abrir uma table com milhares de registros apenas pra inserir 1. Se vai cadastrar 1 item, abra a tabela vazia (ex: codigo = 0). Traga nos SQLs só os campos que for realmente usar. Esses detalhes podem diminuir o tempo de resposta das consultas. Nas pesquisas traga menos registros, com um first(100), por exemplo.

5 máquinas pra começar a ficar lento, não creio que seja só problema de infra...
Responder

Gostei + 0

03/11/2014

Luiz

Obrigado Raylan,

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

Gostei + 0

03/11/2014

Eduardo Silva.

Qual a versão do Firebird e do Delphi que está utilizando?

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
Responder

Gostei + 0

03/11/2014

Raylan Zibel

Talvez voce possa avaliar colocar o seu banco de dados pelo menos em um HD separado. Se você tem muitas aplicações fazendo acesso ao disco pode ser que com isso o Firebird demore um pouco mais pra colher a informação do disco.
Responder

Gostei + 0

05/11/2014

Luiz

Ola Eduardo Belo,

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!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar