Configurazione di SQL Server Query Store
Reportistica di SQL Server Query Store
I built-in report disponibili sono i seguenti:
Regressed Queries: questo report mostra tutte le query che hanno subito una regressione delle performance nell’intervallo di tempo considerato. È possibile utilizzare questo report per identificare le query che sono diventate più lente o che consumano più risorse rispetto a prima.
Overall Resource Consumption: questo report mostra il consumo complessivo di risorse delle query in uno specifico intervallo di tempo. Di default i risultati sono mostrati in riferimento all’ultimo mese e relativamente a 4 categorie di risorse: durata, tempo di utilizzo CPU, letture logiche e numero di esecuzioni.
Top Resource Consuming Queries: questo report mostra le query che consumano principalmente risorse in base al tempo della CPU, alle letture logiche, alle scritture logiche, alle letture fisiche o alla durata nello specifico intervallo temporale selezionato. È possibile utilizzare questo report per approfondire i dettagli di ciascuna query e visualizzarne il piano di esecuzione e le statistiche.
Queries With Forced Plans: questo report mostra le query a cui è applicato un piano di esecuzione forzato. Può essere utilizzato per vedere in che modo la forzatura di un piano di esecuzione influisce sulle prestazioni delle query e se è necessario annullarlo o meno.
Queries With High Variation: questo report mostra le query che hanno avuto un’alta variazione nell’intervallo considerato rispetto ad una specifica metrica selezionata (durata, tempo di cpu, utilizzo di memoria, etc).
Query Wait Statistics: questo report permette di vedere le principali wait che affliggono il database e per ogni categoria di wait è possibile vedere quali sono le query che contribuiscono a questa wait.
Tracked Queries: questo report mostra le query che sono state contrassegnate come tracciate e serve per monitorare il comportamento di specifiche query selezionate.
Vantaggi e svantaggi nell’utilizzo di SQL Server Query Store
Query Store rappresenta sicuramente lo strumento di monitoraggio nativo in SQL Server per eccellenza. Basti pensare che, a partire da SQL Server 2022 e per Azure SQL database, Microsoft ha deciso di attivare di default lo strumento Query Store alla creazione di ogni nuovo database.
I possibili vantaggi di uno strumento di questo tipo sono i seguenti:
Monitoraggio delle Prestazioni: fornisce una visione storica delle prestazioni delle query, facilitando l’identificazione di regressioni e possibili miglioramenti.
Risoluzione dei Problemi: aiuta a diagnosticare rapidamente i problemi di prestazioni e a testare gli effetti delle modifiche apportate.
Gestione dei Piani di Esecuzione: permette di analizzare i piani di esecuzione delle query ed eventualmente forzare l’utilizzo di piani di esecuzione specifici per query problematiche.
Ci sono anche dei possibili svantaggi da tenere in considerazione:
Overhead di Prestazioni: se non configurato correttamente, Query Store può introdurre un sovraccarico di prestazioni. Ci si aspetta un overhead di utilizzo di CPU di pochi punti percentuali (1-3%). Tuttavia, bisogna precisare che nelle primissime versioni (SQL Server 2016) lo strumento era ancora poco ottimizzato. Nei rilasci successivi sono state apportate molte migliorie e ottimizzazione sul piano delle performance (nonché anche di alcune metriche registrate).
Gestione dello Spazio: la raccolta di grandi quantità di dati può portare a problemi di spazio sul database e sul disco. È quindi necessario monitorare tale aspetto e configurare in modo corretto lo strumento.
In conclusione, Query Store è uno strumento potente e versatile che, se utilizzato coscientemente, può migliorare la gestione delle prestazioni del database. Tuttavia, è importante bilanciare i benefici con la consapevolezza degli overhead potenziali e gestire attentamente la configurazione e l’uso dello spazio.
di Matteo Dal Bianco, pubblicato il 5 settembre 2024