boa tarde, eu estava pesquisando sobre o assunto, vi bastante material sobre como implementar uma (ja até consegui fazer a implementação aqui), mas queria saber, na opinião de vocês, quando implementar uma? Em quais situações elas são mais necessarias? não achei nada sobre este assunto em si…
Sendo simplista, sempre.
Sendo detalhista, sempre. Quando você implementa um pool de conexões está se antevendo à necessidade do sistema em gerenciar mais conexões. Evita que o mesmo necessite de manutenção por coisas banais, como ter aberto e não fechar uma conexão.
Lógico que sempre é uma medida muito drástica para o desenvolvimento, pois cada caso é um caso e, se realmente for comprovado que um sistema só precisa de uma conexão, não há por que tentar adicionar algo que vá somar apenas em complexidade.
[quote=drsmachado]Sendo simplista, sempre.
Lógico que sempre é uma medida muito drástica para o desenvolvimento, pois cada caso é um caso e, se realmente for comprovado que um sistema só precisa de uma conexão, não há por que tentar adicionar algo que vá somar apenas em complexidade.[/quote]
eu tinha pensado nisso tb, so q fiquei com aquele pensamento de “estar usando um canhão para matar uma formiga” só que é algo tão simples de se fazer…
Eu posso não ter entendido a pergunta direito, mas pra mim só é necessário utilizar um connection pool quando você não tem como utilizar de um datasource, do qual já gerencia seu próprio pool.
Eu já achei que ele perguntou quando codificar um pool. Se for quando usar um pool eu digo que sempre, com a ressalva de preferir utilizar o pool de conexões que seu servidor de aplicações te provê (o Datasource).
era sobre quando codifica-lo sim, e quanto a quantidade de conexoes? (qtd maxima, qtd minima )
Bom, se o assunto então é codificar então eu diria que quase nunca. Afinal, há diversas implementações de pool de conexões por aí.
Então é o que o rimolive afirmou ali em cima. Evite ao máximo implementar um pool, existem diversas opções por aí (sem contar a que o seu servidor de aplicações oferece).
Quanto ao número de conexões, vai depender do tempo que cada conexão é utilizada. Você pode ter um sistema com picos de 100 usuários em que 10 conexões podem dar conta do recado. Em outro cenário, você pode ter um sistema com picos de 50 usuários em que 25 conexões dão conta. Depende de quanto tempo a conexão fica “presa” em cada request e quantos requests são feitos. Sem contar que, se você estiver em um ambiente clusterizado, deverá levar em conta o número de servidores também… a capacidade do banco de dados entra aqui também (não adianta você abrir 100 conexões com o banco se ele não aguentar)… como você pode ver, não é algo que tenha uma fórmula pronta pra se fazer com 100% de acerto.
O que você pode fazer pra ter em mente um número incial de máximo e mínimo é pegar o percentual de uso de cada conexão e multiplicar pelo número de usuários simultâneos (máximo e mínimo) que você espera na aplicação (se tiver em cluster, pode dividir esse número pela quantidade de servidores no cluster). Isso vai te dar uma estimativa, não um número definitivo.