Database SQL e problemi di esaurimento della connection pool: ecco un trucco per verificare cosa sta davvero impattando le performance del nostro database
Le performance di un database SQL spesso non dipendono dal database in sé, quanto dalle modalità con cui le applicazioni accedono al DB. Si riscontrano così problemi di inefficienza delle query, problemi di cache data e di connection pool.
Queste difficoltà tecniche portano a una caduta brusca delle performance di un database e, di conseguenza, al netto peggioramento delle prestazioni dell’intera infrastruttura IT che dipende dal DB e dalle sue capacità di rispondere prontamente alle interrogazioni e alle modifiche che vengono richieste.
A tal proposito, è sempre bene indagare su alcuni aspetti tecnici del database SQL per assicurarsi che non vi siano difficoltà tali da impedirne il corretto funzionamento.
La maggior parte degli amministratori, sa benissimo che per verificare le performance di un database SQL bisogna prima di tutto andare a verificare se vi sono problemi relativi alla connection pool ed eventualmente andare a risolverli in modo opportuno.
Come?
Continuate la lettura, perché abbiamo deciso di darvi un suggerimento molto interessante.
Connection Pool Exhaustion
La prima verifica da effettuare è sulla connection pool, ossia sulla cache delle connessioni al database che vengono mantenute per velocizzare gli accessi futuri ai dati del DB e l’esecuzione dei comandi. Può accadere che questa cache raggiunga il 100 percento di utilizzo oppure che venga inviato un alert in anticipo, quando la connection pool è vicina all’esaurimento.
Questa difficoltà inficia notevolmente le performance del database, non tanto perché si sia raggiunto il limite di utilizzo in sé e per sé (un alert sul 100 percento di utilizzo della connection pool potrebbe anche indicare un uso ottimizzato del DB da parte dell’app che vi accede), ma perché potrebbero esserci un numero di connessioni maggiori a quelle disponibili.
Si pensa, così, che aumentare la connection pool sia il modo più corretto di risolvere il problema, senza pensare che in questo modo si aumenta la pressione esercitata sul database. La giusta soluzione è andare a indagare dove possa risiedere l’inefficienza reale.
Le query SQL a lunga esecuzione
Il primo passo da compiere è l’identificazione delle bad connection gestite dall’applicazione che interagisce con il DB e, in contemporanea, l’individuazione di eventuali interrogazioni SQL a lunga esecuzione che devono essere riportate agli ingegneri e al team che si occupa della gestione del database. Queste interrogazioni impattano i tempi di esecuzione di tutte le transazioni, costringendole nello stato di attesa per la disponibilità della connection pool.
In questi casi, si può andare a correggere i Database Table Statistics o, ancora, si potrebbe pensare di associare a queste esecuzioni così lunghe una connection pool dedicata.
In questo modo, i tempi di esecuzione delle query sul database SQL e i tempi di reazione dell’applicazione che dipende dal DB torneranno nella norma prima di quanto prevedevamo.