2
respostas

Dúvida sobre pool de conexão

Achei bem interessante sobre pool, mas tenho muitas dúvidas sobre ele: Esse solução nunca fecha, ele somente é constante e aberto quando determinada conexão já usada pelo usuário é devolvida para pool ? Ele só fecha quando parar sistema ou aplicação ou Banco de Dados ? Muitos utilizam essa solução para atender a demanda de conexões ? O spring MVC usa bastante sobre Pool de conexões ?

2 respostas

Heberty, boa tarde. A ideia do pool de conexão é manter um número configurado de conexões abertas. Quando um usuário faz uma requisição para aplicação que precise usar o banco de dados, o pool de conexão "libera" uma conexão para a requisição. Quando o acesso ao banco é finalizado, essa conexão volta ao pool e fica no aguardo de uma nova requisição. Isso é feito para não termos o custo de criar uma nova conexão a cada requisição. É um padrão recomendado para ambientes produtivos. E sim, qualquer framework que vc for utilizar terá o recurso de pool de conexões.

Bom dia!

Quando tratamos em Java/JDBC a questão de conexões em banco de dados, é como o João disse, o Pool mantém um certo número de conexões abertas disponíveis com o banco de dados.

Existe uma parametrização de limitação de mínimo e máximo de conexões disponíveis. O mínimo define quantas conexões o pool gerará já no load. Este número cresce de acordo com a necessidade, até chegar ao limite máximo.

A questão do connection pool é com relação ao seu uso. Depende muito da codificação do sistema. Se o seu sistema, no login, disponibilizar uma conexão e mantê-la para aquele usuário, até o encerramento da sessão, você terá um número limitado de usuários "online"

Agora, vamos pensar grande. O sistema de mobile bank de um banco, tendo 5000 clientes simultâneos navegando no sistema. Não é boa prática você dimensionar um pool tão grande - nem tampouco limitar seu sistema de tal forma - ele deve estar disponível 99% de tempo (estou deixando 1% para manutenções de TI, rsrs).

Assim, na programação , disponibilizamos a conexão somente no momento em que ela for necessária, e no momento seguinte da ação - consulta, insert, etc., ela deve ser imediatamente devolvida. Deste modo, não é necessária configuração de um pool imenso para atender grande concorrência de acesso.

Quanto ao fechamento da conexão, ela pode ter vários motivos. O principal, é o restart do banco, que acarreta no encerramento de todas as conexões. Mas o pool, se devidamente configurado, pode fazer um teste de conexão antes de testar a aplicação. Se a conexão não estiver ok, ele descarta e estabelece uma nova, para garantir a entrega para a aplicação.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software