Pool de conexões?

1 resposta
Luiz-SP

O que é um pool de conexões? Para que server?Eu tenho de implementar? Já tem implementções prontas?Quando deveo usar?

agredeço o pessoal que quizer dar uma ajuda!!!

1 Resposta

ViniGodoy

Criar uma conexão num banco de dados é uma tarefa custosa. Envolve conexão, autenticação, criação de uma sessão para o usuário, validação de regras de segurança, etc. Isso se torna ainda pior se o usuário estiver rodando numa rede separada.

O segundo problema é que, a princípio, os usuários não deveriam manter a sua conexão aberta para sempre. Uma conexão aberta consome recursos, seja memória do servidor e espaço em disco, seja uma das licenças de uso (alguns BDs, como Oracle, tem um número de usuários máximo conectados simultaneamente).

Note que os problemas são ambíguos. Se por um lado o usuário deve evitar se conectar demais, por outro ele deve desconectar sempre que possível.

Como resolver o dilema?

Usa-se um Pool de conexões. Geralmente os pools de conexão mantém a conexão viva, até que um timeout estoure. Isso evita que o usuário desconecte entre statements que acontecem rapidamente. E isso também evita que, quando ele deixa de usar uma conexão, ela fique aberta para sempre. Os pools também tem recursos interessantes como limitar o número máximo e mínimo de conexões simultâneas.

Existem algumas boas implementações de Pools de conexão disponíveis. Eu citaria duas. A primeira, que trabalho juntamente com Spring com ótimos resultados é o Jakarta DBCP, parte do projeto commons: http://commons.apache.org/dbcp/

A segunda é o C3P0, mas é mais indicado para quem quer um pool super simples: http://sourceforge.net/projects/c3p0

Criado 11 de novembro de 2007
Ultima resposta 11 de nov. de 2007
Respostas 1
Participantes 2