Che cos'è il pool di connessioni?
Il pool di connessioni è il termine per la gestione delle connessioni degli utenti che eseguono query di database. Sebbene molti utenti potrebbero non accorgersene, quando vi è un gran numero di utenti che cercano l'accesso a un server delle applicazioni su cui risiede un database, il semplice volume di connessioni potrebbe diventare quasi impossibile per un server mantenere una buona connessione con tutte le connessioni su questi tempi. L'ingegneria del software che consente il pool di connessioni consente a un server di gestire bene le connessioni indipendentemente dall'elevato volume di connessioni che eseguono query e consente di rispondere a tali query con velocità inferiori al secondo.
Le connessioni devono avere una configurazione identica per essere incluse in un pool di connessioni, quindi la maggior parte dei programmi di pool di connessioni server hanno pool di connessione diversi in esecuzione contemporaneamente. Quando un utente cerca di connettersi, viene assegnato a un pool con configurazioni simili, se lo spazio è disponibile. Se non c'è spazio disponibile, la richiesta viene messa in coda per essere assegnata non appena ne viene disponibile una. Un utente potrebbe non essere consapevole di essere in coda, ma potrebbe semplicemente notare che il database sembra lento nella risposta alla query; tuttavia, nel back office dei sistemi di gestione del database, è presente la scansione dei pool per trovare spazio per consentire all'utente di trovare una connessione aperta. La maggior parte dei programmi di pool di connessioni ha un elenco predefinito di utenti massimi per pool e quantità minime di impostazioni temporali per le quali una connessione può rimanere inattiva prima che la connessione venga interrotta e la disponibilità venga restituita al pool.
Alla creazione di un pool di connessioni, un certo numero di oggetti di connessione viene creato e aggiunto al pool. Perché un pool sia considerato attivo, è necessario un numero minimo di oggetti. Questi oggetti connessione sono i posti di disponibilità che uniscono una connessione al pool e possono essere creati e aggiunti al pool in base alle esigenze fino al massimo consentito all'interno di un pool. Poiché gli utenti sono soddisfatti delle loro query e rilasciano l'oggetto di connessione, gli oggetti vengono restituiti al pool dai programmi di pool di connessioni per essere utilizzati da un altro utente o dallo stesso utente quando ritorna.
Un fattore che può rallentare i tempi di risposta nel pool di connessioni è la cosiddetta frammentazione del pool. La frammentazione del pool di solito si verifica a causa della sicurezza integrata o di troppi database che risiedono su un set di server esistente. Un sistema di gestione del database che autentica gli utenti e quindi li mette in coda o li assegna a oggetti del pool di connessioni esistenti esaurisce la memoria e una progettazione più rigorosa del sistema per gli accessi spesso risolve il problema dei troppi database. La progettazione del sistema di sicurezza integrato dei programmi basati su Windows in molti programmi di pool di connessioni richiede che un solo utente basato su Windows risieda all'interno di un pool alla volta. Ciò può essere chiarito dalla creazione di più pool per soddisfare richieste aggiuntive a cui è necessario rispondere contemporaneamente.
Se il programma di pool di connessioni rileva che un utente è rimasto inattivo per un periodo di tempo prestabilito o la connessione è stata interrotta, restituirà l'oggetto di connessione al pool come oggetto non valido. Se un server si arresta mentre è attiva una connessione, la connessione può comunque essere ritirata anche se il pool di connessioni non è a conoscenza della connessione interrotta. I programmi del pool di connessioni ActiveX di solito procedono quindi a cancellare il pool di queste connessioni al riavvio del server.