2
respostas

Duvida sobre o pool de conexões

Boa tarde

Tenho uma duvida sobre o limite de conexões, citando o site da Alura como exemplo:

Digamos que o limite de conexões de um vídeo, é de 20, e tem 20 alunos assistindo, se mais alguém quiser ver o vídeo, tem que esperar um dos 20 terminar o vídeo? E se sim, o 21° aluno recebe uma exception ou alguma queda no servidor?

Desde já agradeço a resposta.

2 respostas

Oiii, tudo bem?

O pool de conexões, basicamente mantém um certo número de conexões abertas com o banco de dados. Quando é aberto uma conexão usando o pool, ao invés de abrir uma nova conexão com o banco usando o JDBC, ele simplesmente pega uma das conexões que já mantinha aberto com o banco e marca para aquele cliente. Quando o cliente fecha a conexão usando o pool, a conexão com o banco não é fechada, mantém a mesma aberta, mas deixa como disponível.

Quando o limite de conexões que os clientes abrem usando o pool passa do limite de conexões que o connection pool mantém abertas, o pool abre uma nova conexão com o banco de dados, a não ser que tenha atingido um limite máximo de conexões reais, caso no qual seria mostrado uma exceção.

Espero ter ajudado, bons estudos :D

Boa noite herdantzig2017!

A questão de pool é um pouco mais complexa, e talvez seu exemplo não seja aplicável, pelo seguinte: Quando você exemplifica o acesso à videos, podemos considerar como se fossem licenças. Assim, se temos 20 licenças de visualização, somente 20 poderão utilizá-las. O 21 teria que esperar.

Quando tratamos em Java/JDBC a questão de conexões em banco de dados, é como a Maria 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.