Da dove partire
Con 6000 batch/sec il sistema è sotto carico significativo. L'obiettivo non è abbassare il numero in assoluto, ma identificare quali query ne sono responsabili e se stanno consumando risorse in modo sproporzionato rispetto al loro valore applicativo. Un batch da 0,5 ms eseguito 5000 volte/sec è spesso innocuo; la stessa query con 300 ms di durata media può bloccare l'intera applicazione.
Strumenti da usare
- Query Store — identifica le query con più esecuzioni, più CPU consumata e più letture logiche nell'ultimo intervallo. È il punto di partenza più rapido su SQL Server 2016+.
- sys.dm_exec_query_stats — DMV per analizzare le query più costose per CPU, I/O e durata media dall'ultimo riavvio del servizio.
- Extended Events — per correlare query ad alto impatto con login, hostname e application name specifici, utile quando la fonte del carico non è ovvia.
Metriche da incrociare
Per ogni query sospetta valuta: numero di esecuzioni, CPU totale, logical reads totali e durata media per esecuzione. Il prodotto tra frequenza e costo unitario indica l'impatto reale sul sistema. Cerca anomalie rispetto alla baseline storica nel Query Store.
