Le prestazioni dell'applicazione e del sistema giocano un ruolo enorme nel modo in cui un utente percepisce il valore del tuo prodotto e la competenza della tua azienda. Se la stessa pagina va costantemente in timeout o ci vuole un'eternità per accedere a un report critico, le prestazioni del tuo sistema di database creeranno un problema di affidabilità per la tua organizzazione.
L'elevata disponibilità e le prestazioni affidabili sono fondamentali per soddisfare i clienti e gli utenti interni del sistema e possono persino influire sui profitti. Con questi obiettivi in mente, l'implementazione di una strategia completa di monitoraggio delle prestazioni di SQL Server è un must.
Vantaggi del monitoraggio delle prestazioni di SQL Server
Il vantaggio più comunemente pubblicizzato del monitoraggio delle prestazioni è la facilità di risoluzione dei problemi e problemi. Uno strumento di monitoraggio di SQL Server ben configurato è il mezzo più efficiente per trovare e risolvere rapidamente i problemi di server e database prima che influiscano sugli utenti finali o diventino problemi di grandi dimensioni e costosi.
Oltre a mantenere l'integrità del sistema, l'implementazione del monitoraggio delle prestazioni di SQL Server può aiutare a contenere i costi dell'infrastruttura. Un esempio sono le spese di archiviazione non necessarie. Quando le prestazioni di SQL Server vengono ottimizzate, l'aumento delle dimensioni dei file viene monitorato continuamente. Un aumento eccessivo delle dimensioni del file attiva un avviso in modo che il problema possa essere risolto prima che lo spazio su disco si esaurisca e vengano generate risorse aggiuntive per risolvere il problema.
E se scegli una soluzione di monitoraggio basata su cloud, puoi aumentare ulteriormente il ROI dicendo addio alle spese di alloggio e manutenzione dei server fisici.
Traccia queste metriche per migliorare le prestazioni di SQL Server
Sappiamo che il monitoraggio delle prestazioni di SQL Server è un'ottima strategia per risolvere i problemi e risparmiare denaro, ma non otterrai tutti i vantaggi dal tuo strumento di monitoraggio di SQL Server a meno che tu non tenga traccia delle metriche corrette. Per ottenere prestazioni ottimali da SQL Server, ecco cinque aree da tenere d'occhio e le metriche più importanti da monitorare da ciascuna.
1. cache buffer
La cache del buffer memorizza le copie delle pagine del database utilizzate di recente. SQL Server cerca prima nella cache, ma se non trova ciò che sta cercando lì, va sul disco. La lettura dal disco è lenta, il che può influire negativamente sulle prestazioni.
Rapporto hit cache
Il rapporto di accesso alla cache mostra la frequenza con cui SQL Server accede alle pagine dalla cache. Valori più alti indicano che le pagine sono state accedute dalla memoria e non dal disco. Se vedi costantemente un basso tasso di hit della cache, verifica la presenza di un collo di bottiglia nella memoria di sistema.
Aspettativa di vita della pagina
Il monitoraggio dell'aspettativa di vita della pagina mostra per quanto tempo una pagina rimane in memoria invece di andare su disco. Maggiore è l'aspettativa di vita della pagina, migliore è il rapporto di hit della cache.
Pagine Checkpoint/Sec
SQL ServerSQL Server imposta i checkpoint per liberare spazio nella cache del buffer scaricando periodicamente le pagine modificate dal buffer al disco. Il numero di pagine scaricate dipende dalle impostazioni di configurazione e dall'utilizzo del server, quindi è importante impostare una linea di base per il confronto. Se noti un aumento delle pagine scaricate, potresti avere un problema di I/O.
2. Indici
Gli indici di database aiutano a velocizzare le operazioni nelle tabelle con molti record. Sebbene gli indici siano uno strumento utile per migliorare alcune funzioni del database, esistono problemi intrinseci con gli indici che possono ridurre le prestazioni se non vengono rilevati rapidamente.
Frammentazione
La frammentazione dell'indice si verifica quando i record vengono aggiunti ed eliminati. Nel tempo, queste modifiche causano problemi di prestazioni lasciando troppo spazio vuoto su troppe pagine e aggiungendo nuove pagine fuori ordine. Ciò può rallentare le scansioni e utilizzare memoria eccessiva.
Il monitoraggio della frammentazione dell'indice ti consentirà di sapere quando è necessario eseguire Ricostruisci o Riorganizza su un indice per correggere la frammentazione e migliorare le prestazioni.
Fattore di riempimento e divisioni di pagina
L'impostazione del fattore di riempimento consente ai tuoi indici di sapere quanto dovrebbe essere piena ogni pagina. Se una pagina è troppo piena, si verificano divisioni di pagina; se una pagina non è abbastanza piena, stai sprecando risorse.
Il monitoraggio delle divisioni di pagina può aiutare a identificare quando è necessaria una regolazione del fattore di riempimento. Per ottenere le migliori prestazioni, non impostare un valore del fattore di riempimento a livello di sistema. Valuta i singoli indici e imposta il fattore di riempimento a un livello appropriato per ciascuno.
3. T-SQL
Per ottimizzare le prestazioni, SQL Server raggruppa le istruzioni SQL, quindi le compila nei piani di esecuzione e le memorizza nella cache per il riutilizzo. Se SQL Server non è in grado di riutilizzare il piano di esecuzione, il piano viene ricompilato, il che utilizza molta CPU e riduce le prestazioni. Pertanto, è meglio mantenere il numero di ricompilazioni di istruzioni SQL il più basso possibile.
Il monitoraggio dei tassi di compilazione e ricompilazione SQL mostrerà se è necessario riconfigurare alcune aree, come le procedure memorizzate e i parametri di query.
4. Blocco
Il blocco di SQL Server è causato da più client e processi che richiedono l'accesso alle stesse risorse contemporaneamente. Se una risorsa è già in uso, l'accesso è bloccato e la risorsa non è disponibile per le richieste successive. In questo modo il processo viene sospeso fino a quando la risorsa non viene rilasciata e nuovamente disponibile.
Attese di blocco
Le richieste normalmente non devono attendere i blocchi, quindi questa metrica dovrebbe rimanere intorno a zero. Un aumento delle attese di blocco indica un problema con il tempo di caricamento, quindi dovrai rintracciare la causa principale del problema.
Processi bloccati
Il monitoraggio dei processi bloccati è un buon modo per evitare molte e-mail che ti informano di un processo bloccato. Utilizzare SQL Server Profiler per acquisire dati sui processi bloccati ed esaminare regolarmente il report.
5. Utilizzo delle risorse
Il monitoraggio delle metriche di utilizzo delle risorse è un modo efficace non solo per individuare i problemi di prestazioni, ma anche per aiutare con la pianificazione della capacità.
Conteggio righe
Il monitoraggio del conteggio delle righe fornisce informazioni dirette e facilmente tracciabili sul volume di dati associato a una determinata tabella nel tempo. Un aumento o una diminuzione imprevisti del conteggio delle righe dovrebbe richiedere un'indagine sulla causa.
I/O file di database
Misurando le metriche di I/O rispetto ai file di database, puoi tenere traccia della quantità di dati scritti e letti da un determinato file di dati. Se osservi un potenziale problema, questa metrica può aiutare a restringere la causa principale. Il monitoraggio dell'I/O del file di database aiuta anche con la pianificazione dell'infrastruttura perché può aiutarti a prevedere il throughput futuro dei dati e ad adattare le risorse di conseguenza.
Dimensioni del backup del registro delle transazioni
Quando un server si arresta in modo anomalo a causa del sovraccarico, SQL Server utilizza i record di registro del database archiviati nei file di registro virtuali (VLF) per il ripristino. È importante monitorare quanti VLF sono presenti nel registro delle transazioni, perché troppi possono rallentare i processi di ripristino durante il ripristino dopo un'interruzione.
Il monitoraggio delle prestazioni di SQL Server è un componente cruciale della strategia di controllo della qualità di un'organizzazione. Tenere traccia di alcune metriche chiave delle prestazioni può darti la reputazione di fornire ai tuoi utenti un sistema su cui possono fidarsi e su cui fare affidamento; non farlo può rendere il tuo sistema solo un'altra applicazione buggy che gli utenti temono.