SQL Server Health Check con Datamaze

Datamaze
23.06.23 10:36 AM Comment(s)

L’Health Check di SQL Server è un’attività che consente di effettuare un’analisi approfondita delle prestazioni e delle configurazioni di un database server.


La raccolta dei dati

Questa attività impegna uno dei nostri DBA per circa un paio di giornate, durante le quali vengono raccolti i dati per effettuare un’analisi approfondita dell’infrastruttura utilizzata dal database server, grazie alla quale cerchiamo di individuare eventuali problemi:
  • a livello di configurazione hardware
  • a livello di Hypervisor (VM Ware, altri virtualizzatori)
  • impostazioni mancanti a livello di sistema operativo
  • impostazioni che possono influire anche a livello applicativo ed altro.

Spesso le installazioni di SQL Server vengono fatte con le impostazioni di default, che nell’80% dei casi possono andare bene, in quanto il processo di setup di SQL Server è molto accurato a partire dalla versione 2017. Nel restante 20% dei casi, soprattutto dove vengono applicati carichi di lavoro importanti, ci sono best practices da applicare per essere certi che l’ambiente sia tarato sulle necessità aziendali.

L’intervista e le necessità di risorse

A seguito della raccolta dati, effettuiamo un’intervista con il cliente, per capire le reali necessità di risorse legate all’ambiente, alle applicazioni e ai database. Un esempio classico sono installazioni con CPU core per macchina che a volte troviamo sovrastimanti e/o non correttamente licenziati. Negli ultimi anni le licenze di SQL Server sono su modello per Core; quindi, conviene cercare di consumare le risorse del processore nel modo più efficiente possibile. Altro esempio sono le impostazioni di RAM e disco che in alcuni casi anche se “abbondanti” se non configurati correttamente possono peggiorare invece di migliorare le performance.

In questa fase stabiliamo i requisiti minimi per garantire la business continuity e la sicurezza del sistema. Spesso non si pensa ad eventi inaspettati, ma possono capitare situazioni come, ad esempio, un collega che cancella tabella documenti del gestionale o fa aggiornamento della data di consegna dell’EMP. Se in questi casi non ho modo di tornare indietro a 5-10 minuti prima che accadesse questo evento, può essere un problema per il corretto svolgimento dei processi di business.

I parametri e il report

Quando gli utenti segnalano lentezza andiamo a verificare i parametri dell’istanza e lo stato dei database: 
  • la frammentazione degli indici, 
  • quando sono state aggiornate le statistiche
  • verifichiamo che siano presenti piani di manutenzione adeguati per sopportare il carico di lavoro
  • effettuiamo un’analisi della configurazione del singolo database.

Al termine dell’analisi forniamo un report che descrive nel modo più comprensibile l’elenco degli interventi necessari per portare il sistema ad un livello di affidabilità e sicurezza grazie alla buona configurazione.

Contestualmente all’Health Check non si effettua mai alcuna modifica alla configurazione di istanza e database. Questo perché l’Health Check è appunto una fotografia dello stato di funzionamento, non voglio andare ad interferire con risultati o funzionamento del sistema facendo modifiche contestuali all’analisi.

Le modifiche sono discusse all’interno del report e il cliente decide se apportare le modifiche, appoggiarsi a noi o altro.

Gli strumenti utilizzati durante il nostro Health Check

Ecco i principali strumenti che utilizziamo:

  1. Script della comunità SQL Server Diagnostic queries di Glenn Berry (http:// www.sqlskills.com/blogs/glenn)
  2. Stored Procedure SP Blitz del set di script First Responder Kit Brent Ozar First Aid (brentozar.com), utili per osservare velocemente una serie di info a livello di configurazione dell’istanza e dei database con relativo commento.
  3. SQL Monitor: strumento leggero, per cui non serve installazione e che può essere eseguito su altra macchina. Serie di query diagnostiche ogni pochi secondi che analizzano dal punto di vista di: IO, accesso alla memoria (pagine e lock), tempdb. Genera report quando vengono evidenziate situazioni di lock che durano più di n secondi (dove n è configurabile), in questo modo si trova così il colpevole del blocco e quali sono le query che determinano queste situazioni.
  4. SQL IO, SQL IOSIM di Microsoft, simula il carico di lavoro di un server SQL a livello di storage. Simula letture e scritture di SQL Server per tempo e dimensione file personalizzabili. Questi dati sono preziosi da analizzare con i sistemisti per individuare il problema se è dell’hypervisor, dello storage o altro.
  5. SQL Catcher per SQL Server.
  6. Powershell per automatizzare l’esecuzione dei vari script.

Cosa consegniamo al cliente

Ecco l'elenco della documentazione che viene consegnata al cliente al termine dell'Health Check:

  • Allegati tecnici con i risultati delle query.
  • Analisi dettagliata con tutti i riscontri raccolti, un documento descrittivo che spesso viene richiesto per essere mostrato al CIO dalla software house che ci chiama per analizzare l’istanza  presso il cliente. Il documento è composto da 8-12 pagine con introduzione standard e summary dell’Health Check con tutto quello che è stato rilevato, ideale per una fruizione immediata. Segue la fotografia dei componenti principali del db server. Per ogni evidenza lo stato rilevato, il valore ottimo, l’azione da fare per arrivare al valore ottimo, le referenze se presenti.  In questa sezione troviamo la descrizione dell’hardware (hypervisor, cpu, eventuali suggerimenti), la configurazione dei database, l’analisi del tempdb, la valutazione dei piani di manutezione dell’istanza. Sono inoltre presenti considerazioni a livello di performances: quali sono i database e i file più onerosi per l’IO, un’analisi dei tempi di attesa e loro classifica. Infine, sono presenti le indicazioni dei nostri DBA.

di Alice Sella, pubblicato il 23 giugno 2023