2
respostas

Dúvida Pool de conexões

Eu não peguei como seria esse lance das conexões e do pool de conexões na prática. Cada usuário que acessa alguma página do site ou um campo de busca no site que faça requisição no banco de dados é considerado uma conexão, certo? Essa porta se fecha quando o usuário tem o retorno dessa requisição? E no pool de conexões essa fila roda muito rápida já que os retornos das requisições no banco de dados geralmente são feito em ms ? E qual seria o lado negativo do pool de conexões, o qual não valeria a pena ter, por exemplo, um pool de mil conexões ou mais?

Já uma dúvida que tem mais a ver com infra, esse lance das conexões tem a ver com a transferencia de dados que geralmente é cobrado pelos clouds da vida (aws por exemplo)? Se sim, cada requisição dessas teria um valor em tamanho de arquivo (ou seja, uma consulta/alteração no BD pode representar 10kb por exemplo)? E ai nesse caso cada conexão aberta implicaria em alguma coisa nessa transferência de dados ?

Obrigadooo

2 respostas

A conexão é utilizada quando a aplicação precisa acessar o banco de dados. A conexão é devolvida para o pool quando o I/O com o banco de dados para aquela transação é encerrada. As conexões do pool são constantemente usadas / devolvidas ao pool. 100 usuários não significa que você precisa de um pool de conexões com tamanho 100. Em teoria você poderia manter um pool size de 1000 se houver necessidade, mas lembre-se que isso consome recursos e o banco de dados precisa manter essas 1.000 conexões abertas.

Boa tarde!

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