O que é o pool de conexão?
Pool de conexões é o termo para o gerenciamento das conexões dos usuários que fazem consultas aos bancos de dados. Embora muitos usuários possam não perceber, quando há um grande número de usuários buscando acesso a um servidor de aplicativos no qual reside um banco de dados, o grande volume de conexões pode se tornar quase impossível para um servidor manter uma boa conexão com todas as conexões em esses tempos. A engenharia de software que permite o pool de conexões possibilita que um servidor gerencie bem as conexões, independentemente do alto volume de conexões que faz consultas e permite a resposta a essas consultas com velocidades de segundo de segundo.
As conexões devem ter uma configuração idêntica para serem incluídas em um conjunto de conexões, para que a maioria dos programas de conjunto de conexões do servidor tenha diferentes conjuntos de conexões em execução simultaneamente. Quando um usuário procura se conectar, ele é atribuído a um pool com configurações semelhantes, se houver espaço disponível. Se não houver espaço disponível, a solicitação será enfileirada para ser atribuída assim que houver uma disponível. Um usuário pode não estar ciente de que ele está em uma fila, mas pode simplesmente perceber que o banco de dados parece lento na resposta da consulta; no entanto, no back office dos sistemas de gerenciamento de banco de dados, há varredura dos pools para encontrar espaço para o usuário encontrar uma conexão aberta. A maioria dos programas de pool de conexões possui uma lista definida de usuários máximos por pool e quantias mínimas de configurações de tempo pelas quais uma conexão pode permanecer inativa antes que a conexão seja interrompida e a disponibilidade retornada ao pool.
Na criação de um conjunto de conexões, um certo número de objetos de conexão é criado e adicionado ao conjunto. Para que um pool seja considerado ativo, ele precisa de um número mínimo de objetos. Esses objetos de conexão são os assentos de disponibilidade que vinculam uma conexão ao pool e podem ser criados e adicionados ao pool conforme necessário até o máximo permitido dentro de um pool. Como os usuários estão satisfeitos com suas consultas e abandonam seu objeto de conexão, os objetos são retornados ao pool pelos programas de pool de conexão para uso por outro usuário ou pelo mesmo usuário quando ele retornar.
Um fator que pode diminuir o tempo de resposta no pool de conexões é o que é chamado fragmentação de pool. A fragmentação de pool geralmente ocorre devido à segurança integrada ou a muitos bancos de dados que residem em um conjunto existente de servidores. Um sistema de gerenciamento de banco de dados que autentica os usuários e, em seguida, enfileira ou atribui-os a objetos existentes do conjunto de conexões drena a memória, e um design mais rígido do sistema para acessos geralmente limpa o problema de muitos bancos de dados. O design do sistema de segurança integrado de programas baseados no Windows em muitos programas de pool de conexões exige que apenas um usuário baseado no Windows resida dentro de um pool por vez. Isso pode ser esclarecido com a criação de mais conjuntos para acomodar solicitações adicionais que precisam ser respondidas simultaneamente.
Se o programa de pool de conexões detectar que um usuário ficou ocioso além de um período definido ou a conexão foi cortada, ele retornará o objeto de conexão ao pool como um objeto inválido. Se um servidor ficar inativo enquanto uma conexão estiver em vigor, a conexão ainda poderá ser retirada, mesmo que o pool de conexões não esteja ciente da conexão cortada. Os programas de pool de conexões ActiveX geralmente prosseguem para limpar o pool dessas conexões à medida que o servidor é reiniciado.