Delphi Firebird 2.0 muito lento via internet
Tenho um sistema cliente/servidor com SocketServer, na rede local, funciona que é uma bala.
Mas tenho um cliente que tem uma estação de trabalho fora da rede local, como ele não tem IP fixo, usamos o NOIP no servidor.
Acessando via internet o programa fica extremamente lento.
Gostaria de receber algumas dicas de como melhora a velocidade, sendo que o cliente não está disposto a investir R$.
O computador onde o firebird está instalado é um XP e não é dedicado, eu uso TSQLConection+TSQLDataSet+TDataSetProvider+TclientDataSet com BorlandSoketServer.
Recentemente fiz uns testes com IP Fixo e não percebi diferença em relação ao NOIp, o que percebi é que tem muita diferença em relação a extensão do arquivo, por exemplo .GDB é muito mais lento que .FDB.
Fico no aguardo de algumas dicas.
Mas tenho um cliente que tem uma estação de trabalho fora da rede local, como ele não tem IP fixo, usamos o NOIP no servidor.
Acessando via internet o programa fica extremamente lento.
Gostaria de receber algumas dicas de como melhora a velocidade, sendo que o cliente não está disposto a investir R$.
O computador onde o firebird está instalado é um XP e não é dedicado, eu uso TSQLConection+TSQLDataSet+TDataSetProvider+TclientDataSet com BorlandSoketServer.
Recentemente fiz uns testes com IP Fixo e não percebi diferença em relação ao NOIp, o que percebi é que tem muita diferença em relação a extensão do arquivo, por exemplo .GDB é muito mais lento que .FDB.
Fico no aguardo de algumas dicas.
Diegotiemann
Curtidas 0
Respostas
Emerson Nascimento
14/08/2009
o sistema deveria ser em camadas...
GOSTEI 0
Osocram
14/08/2009
eu acho q ip fixo ou não. Não interfere na velocidade.
O que interfere é o banco e o servidor de aplicação serem dedicados, e de preferencia o banco ser linux
Isso ja é um começo p melhorar a velocidade
Ter o sistema em 3 camadas vai ajudar tbm.
Fazer um tunning nos seus sql´s
O que interfere é o banco e o servidor de aplicação serem dedicados, e de preferencia o banco ser linux
Isso ja é um começo p melhorar a velocidade
Ter o sistema em 3 camadas vai ajudar tbm.
Fazer um tunning nos seus sql´s
GOSTEI 0
Diegotiemann
14/08/2009
Continuei pesquisando e encontrei um tal de Zebedde.
Em alguns lugares dizia que ele ajuda na questão da velocidade, mas tbm encontrei váriso usuários dizendo que não teve diferença.
Alguém de vcs já usou ele?
Em alguns lugares dizia que ele ajuda na questão da velocidade, mas tbm encontrei váriso usuários dizendo que não teve diferença.
Alguém de vcs já usou ele?
GOSTEI 0
Emerson Nascimento
14/08/2009
você pode implementar um compactador - via intercept GUID - que será utilizado pelo SocketConnetion e/ou pelo SocketServer.
o Delphi traz um exemplo: intrcpt.dpr
esse projeto irá gerar uma dll que deverá ser instalada tanto nos clientes quanto no servidor.
estude a propriedade InterceptGUID do objeto SocketConnetion.
o Delphi traz um exemplo: intrcpt.dpr
esse projeto irá gerar uma dll que deverá ser instalada tanto nos clientes quanto no servidor.
estude a propriedade InterceptGUID do objeto SocketConnetion.
GOSTEI 0
Osocram
14/08/2009
Olha eu entrando de bicudo aqui...
XD
Nossa... isso é mto interessante.
Lembro que um amigo meu usava um componente para conectar no banco, acho q era do DevExpress ele ja tinha essa opção de compactar os dados antes de transmitir....
Mas eu gosto de usar copmonentes nativos do delphi e não sabia como implementar isso...
Vou dar uma olhada nisso tbm..
XD
Nossa... isso é mto interessante.
Lembro que um amigo meu usava um componente para conectar no banco, acho q era do DevExpress ele ja tinha essa opção de compactar os dados antes de transmitir....
Mas eu gosto de usar copmonentes nativos do delphi e não sabia como implementar isso...
Vou dar uma olhada nisso tbm..
você pode implementar um compactador - via intercept GUID - que será utilizado pelo SocketConnetion e/ou pelo SocketServer.
o Delphi traz um exemplo: intrcpt.dpr
esse projeto irá gerar uma dll que deverá ser instalada tanto nos clientes quanto no servidor.
estude a propriedade InterceptGUID do objeto SocketConnetion.
GOSTEI 0
Emerson Nascimento
14/08/2009
lembrando que o intercept pode ser indicado para uma porta específica.
você pode, por exemplo:
- deixar a porta 211 para as conexões internas, sem o intercept (compactador) e;
- deixar a porta 212 para as conexões externas, usando o intercept nesta porta.
trabalho desta forma e posso dizer: a diferença é absurda! nas conexões internas não faz diferença (às vezes fica até pior, por conta de ter de compactar e descompactar os dados) mas nas conexões externas a diferença é nítida. o sistema roda em conexões discadas sem gargalo, como se estivesse numa rede interna.
você pode, por exemplo:
- deixar a porta 211 para as conexões internas, sem o intercept (compactador) e;
- deixar a porta 212 para as conexões externas, usando o intercept nesta porta.
trabalho desta forma e posso dizer: a diferença é absurda! nas conexões internas não faz diferença (às vezes fica até pior, por conta de ter de compactar e descompactar os dados) mas nas conexões externas a diferença é nítida. o sistema roda em conexões discadas sem gargalo, como se estivesse numa rede interna.
GOSTEI 0