bom dia a todos!!!
Pessoal, to com uma dúvida que não deve ser tão incomum…
é o seguinte:
eu crio uma aplicação desktop que comunica com um banco de dados…ela funciona numa boa…
aí, eu pego, e aponto para outro bancvo de dados, desta vez, em um servidor(semi-dedicado)uma coisa que notei é que , mesmo o servidor sendo razoalmente rápido e permitindo trabalhar muito bem pela “web”, notei que o acesso( conexão, por exemplo)pelo programa em questão e MUITO demorado…
porque isso???
Tem algum jeito de acelerar isso???
Valeu a força, pessoal!!!
grande abraço a todos!!!
Horácio
comunicação com banco externo
3 Respostas
vou dar algumas sugestões para você analisar no seu software:
Sua aplicação utiliza pool de conexões?
Está utilizando algum cache de consultas e/ou algum framework ORM para gerenciar suas conexões e transações?
Quando você se conecta ao servidor “em localhost” a lentidão é a mesma?
Não sei que SGBD utiliza, mas está utilizando as configurações padrão de Tuning?
O banco que você acessa está na mesma rede local que sua máquina? Se não tiver, talvez seja interessante aumentar o buffer de saída do banco.
na verdade, não fiz nada disso que comentou…
Estou fazendo uma classe simples de conexões…
No localhost, a conexão é muito rápida!não tenho qualquer problema quando roda na localhost…
Dessas opções que vocês passou, qual é , para um iniciante a mais interessante?
o que é um padrão de Tuning?
Fale mais, por favor…achei interessantes essas pções que me informou…
Muito obrigado!
Horácio
O legal seria você estudar elas, na ordem que eu listei. (mas todas são independentes)
- No caso do pool de conexões, você pode pesquisar por C3P0 ou DBCP, são as libs mais usadas para isso (e também as mais robustas e confiáveis)
- No caso do framework ORM, eles vão abstrair as persistências em banco de dados em linguagem java, e dependendo da configuração que você utilizar (ou dos frameworks que utilizar em conjunto), ele gera cache dos objetos na memória, evitando assim que sejam feitas muitas conexões ao banco para buscar a mesma informação.
- Tuning de banco de dados é você configurar ele de forma a aproveitar melhor os seus recursos de hardware (processador, memória, disco, etc…) de acordo com suas necessidades. Essa parte é um pouco mais avançada que os ítens anteriores e você teria que estudar os específicos do banco que você escolheu. (eu particularmente prefiro o PostgreSQL) A configuração padrão normalmente é o melhor para a maioria dos computadores na maioria dos casos (no caso, o meio termo entre as melhores configurações, no caso do Postgre e MySQL, sempre considerando somente uns 128MB de RAM na máquina)
- O buffer de saída é uma configuração do banco de dados, normalmente o buffer de saída dá uma diferença muito grande quando a consulta gerou o resultado, mas o resultado demora muito para enviar a resposta de se chegou ou não na aplicação destino, nesse caso, o buffer é como uma “janela” (lembra quando estudou TCP na faculdade, e viu o conceito de janela? É o mesmo que ele usa), essa janela, caso seja pequena para o conjunto de dados enviados, vai ficar esperando a resposta da aplicação se recebeu essa linha ou não.