Condividi ora:
Sommario nascondere

1. Introduzione a SQL Server performance Monitor

1.1 Che cos'è SQL Server Monitoraggio delle prestazioni?

SQL Server Il monitoraggio delle prestazioni è il processo di monitoraggio, analisi e gestione delle prestazioni e dello stato di salute del tuo SQL Server database. Implica la raccolta e l'interpretazione di dati su vari aspetti del sistema di database per garantire prestazioni ottimali, prevenire problemi e mantenere l'integrità del database.

Il monitoraggio delle prestazioni comprende il monitoraggio dei tempi di esecuzione delle query, dell'utilizzo delle risorse, delle prestazioni degli indici, dei blocchi e dei deadlock e dei modelli di crescita del database. Questa supervisione continua aiuta gli amministratori a identificare potenziali problemi prima che abbiano un impatto sugli utenti o sulle operazioni aziendali.

1.2 Principali vantaggi del monitoraggio delle prestazioni

Efficace SQL Server il monitor delle prestazioni offre diversi vantaggi critici:

  • Rilevamento proattivo dei problemi: Identificare e affrontare potenziali problemi prima che abbiano un impatto sugli utenti o sulle operazioni aziendali
  • Ottimizzazione delle prestazioni: Individuare colli di bottiglia e inefficienze per migliorare le prestazioni complessive del database
  • Pianificazione della capacità: Prevedere le esigenze di risorse e pianificare la crescita futura in base ai dati storici
  • Conformità e sicurezza: Garantire il rispetto dei requisiti normativi e rilevare attività sospette

1.3 Sfide comuni relative alle prestazioni

Senza un adeguato monitoraggio delle prestazioni del database SQL, le organizzazioni si trovano ad affrontare diversi rischi:

  • Tempi di inattività imprevisti che interrompono le operazioni aziendali
  • Scarse prestazioni dell'applicazione che influiscono sull'esperienza dell'utente
  • Perdita o danneggiamento dei dati
  • Utilizzo inefficiente delle risorse che comporta costi superflui
  • Utenti frustrati e potenziale perdita di fatturato

Secondo uno studio IDC del 2023, il 65% dei problemi di prestazioni dei database deriva da pratiche di monitoraggio o ottimizzazione scadenti.

2. Informazioni su Windows Performance Monitor (PerfMon)

2.1 Che cos'è Windows Performance Monitor?

Windows Performance Monitor (PerfMon) è uno strumento integrato di Windows che monitora le risorse di sistema e le prestazioni delle applicazioni. Per SQL Server amministratori, PerfMon fornisce informazioni preziose sia sul sistema operativo che SQL Server metriche, rendendolo essenziale per un'analisi completa delle prestazioni.

Monitoraggio delle prestazioni di Windows (PerfMon)

PerfMon misura le statistiche delle prestazioni a intervalli regolari e le salva in file per analisi successive. Gli amministratori di database possono selezionare l'intervallo di tempo, il formato del file e le statistiche da monitorare. Lo strumento non è SQL Server-specifico: gli amministratori di sistema lo utilizzano per monitorare Windows stesso, Exchange, i file server e qualsiasi applicazione che possa riscontrare colli di bottiglia.

2.2 Avvio di Performance Monitor

È possibile avviare Performance Monitor utilizzando diversi metodi:

  1. Clicchi Inizio, Il tipo di perfmon nella casella di ricerca, clicca su "Performand Monitor" nel risultato della ricerca:
    Cerca e avvia PerfMon dalla casella di ricerca di Windows.
  2. Stampa Windows + R, Il tipo di perfmone premere entra
    Avvia PerfMon dalla finestra Esegui di Windows.
  3. Accedere a Pannello di controllo -> Sistema e sicurezza -> Strumenti di amministrazione -> performance Monitor
    Avvia PerfMon dal Pannello di controllo -> Sistema e sicurezza -> Strumenti di amministrazione -> Monitoraggio prestazioni

3. essenziale SQL Server Contatori delle prestazioni

3.1 Contatori delle prestazioni della memoria

I contatori di memoria sono fondamentali per il monitoraggio SQL Server prestazioni poiché indicano se il database dispone di risorse di memoria sufficienti.

MByte disponibili

Questo contatore mostra la quantità di memoria fisica immediatamente disponibile per l'allocazione. Dovrebbe rimanere abbastanza costante e idealmente non scendere sotto i 4096 MB. Valori bassi potrebbero indicare che SQL ServerL'impostazione di memoria massima è lasciata al valore predefinito o nonSQL Server le applicazioni consumano memoria.

Aspettativa di vita della pagina

La durata prevista della pagina misura per quanto tempo (in secondi) una pagina rimane nel buffer pool senza essere referenziata. Un valore normale è di 300 secondi o più. Valori inferiori indicano un utilizzo eccessivo della memoria e un turnover eccessivo del buffer, riducendo l'efficacia della cache.

Rapporto di hit della cache buffer

Questo contatore indica la percentuale di richieste di dati a cui è stata data risposta utilizzando la cache buffer SQL (memoria) anziché la lettura dal disco. Solitamente raggiunge o supera il 99%. Valori inferiori suggeriscono che SQL Server necessita di più memoria o si sta ancora riscaldando dopo un riavvio.

Concessioni di memoria in sospeso

Questo mostra il numero di processi in attesa di memoria all'interno SQL ServerIn condizioni normali, questo valore dovrebbe essere costantemente 0. Valori più alti indicano un'allocazione di memoria insufficiente per SQL Server.

Memoria target del server rispetto alla memoria totale del server.

Target Server Memory indica la quantità ideale di memoria SQL Server vuole usare. La memoria totale del server mostra cosa SQL Server attualmente utilizzato. Il rapporto tra questi valori dovrebbe essere circa 1. Differenze significative potrebbero indicare una pressione sulla memoria o una memoria disponibile insufficiente.

3.2 Contatori delle prestazioni del processore

I contatori della CPU aiutano a identificare i colli di bottiglia del processore e a capire come SQL Server utilizza risorse di elaborazione.

% Tempo di elaborazione

Misura la percentuale di tempo trascorso dal processore nell'esecuzione di thread non inattivi. Sui server attivi, i valori possono raggiungere il 100%, ma un utilizzo prolungato superiore al 70-75% indica in genere problemi di prestazioni per gli utenti. Indici mancanti o inadeguati causano spesso un elevato utilizzo della CPU.

% Tempo privilegiato

Il tempo di elaborazione è suddiviso tra l'elaborazione in modalità Utente e quella in modalità Privilegiata (Kernel). Tutti gli accessi al disco e le operazioni di I/O avvengono in modalità Kernel. Se questo contatore supera il 25%, è probabile che il sistema esegua troppe operazioni di I/O. I valori normali sono compresi tra il 5% e il 10%.

Lunghezza della coda del processore

Questo contatore mostra i thread in attesa di risorse CPU. I valori sono costantemente superiori a 1 (tranne durante SQL Server compressione del backup) indicano la pressione della CPU. Questo spesso significa che altre applicazioni sono installate sul SQL Server macchina, che viola le migliori pratiche.

Cambiamenti di contesto/sec

Misura la frequenza con cui il processore passa da un thread all'altro. Un cambio di contesto eccessivo può influire sulle prestazioni e indicare un carico di sistema elevato.

3.3 Contatori delle prestazioni I/O del disco

I contatori dei dischi sono essenziali per il monitoraggio delle prestazioni SQL, poiché l'I/O del disco spesso diventa il principale collo di bottiglia nei sistemi di database.

% Tempo su disco

Registra la percentuale di tempo in cui il disco è stato occupato con operazioni di lettura/scrittura. Valori costantemente superiori all'85% indicano un collo di bottiglia I/O. Poiché il disco è molto più lento della memoria, la riduzione di questa metrica migliora le prestazioni.

Media secondi/lettura disco e media secondi/scrittura disco

Questi contatori misurano il tempo medio (in secondi) per le operazioni di lettura e scrittura. Se i valori medi superano i 10-20 ms, il disco impiega troppo tempo per elaborare i dati. Le unità di registro delle transazioni richiedono prestazioni di scrittura particolarmente elevate.

Lunghezza della coda del disco

Indica le richieste di lettura/scrittura su disco in sospeso. Valori costantemente superiori a 2 (o 2 per disco per array RAID) indicano che il disco non riesce a soddisfare le richieste di I/O.

Byte del disco/sec

Monitora la velocità di trasferimento dati da/verso il disco. Se questa supera la capacità nominale del disco, i dati iniziano a accumularsi, come indicato dall'aumento della lunghezza della coda del disco.

Trasferimenti su disco/sec

Tiene traccia del numero di operazioni di lettura/scrittura eseguite sul disco. SQL Server L'accesso ai dati è in genere casuale, il che è più lento a causa del movimento della testina del disco. Assicurati che questo valore rimanga al di sotto della velocità massima dell'unità disco (in genere 100/sec per le unità standard).

3.4 SQL Server Contatori specifici

3.4.1 Contatori del gestore buffer

Monitoraggio dei contatori di Buffer Manager SQL Serveroperazioni del buffer di memoria:

  • Letture pagina/sec: Conteggio cumulativo delle letture di pagine di database fisici
  • Scritture di pagine/sec: Conteggio cumulativo delle scritture di pagine di database fisiche
  • Scritture pigre/sec: Numero di buffer scritti dal lazy writer per liberare memoria
  • Pagine di checkpoint/sec: Pagine svuotate dal checkpoint o da altre operazioni che richiedono lo svuotamento di tutte le pagine sporche

3.4.2 Contatori delle statistiche SQL

Questi contatori forniscono informazioni su SQL Server elaborazione delle query:

  • Richieste batch/sec: Numero di richieste batch SQL ricevute dal server. Questo valore serve come parametro di riferimento per l'attività del server.
  • Compilazioni SQL/sec: Numero di compilazioni SQL. Dovrebbe essere pari o inferiore al 10% del totale delle richieste batch/sec.
  • Ricompilazioni SQL/sec: Numero di ricompilazioni SQL. Dovrebbe essere pari o inferiore al 10% del totale delle richieste batch/sec.

3.4.3 Contatori delle statistiche generali

  • Connessioni utente: Numero di utenti connessi al sistema. Utilizzato come parametro di riferimento per monitorare la crescita delle connessioni nel tempo.
  • Processi bloccati: Conteggio attuale dei processi bloccati. Idealmente dovrebbe essere 0

3.4.4 Contatori del gestore della memoria

  • Sovvenzioni per la memoria in sospeso: Numero totale di processi in attesa di concessione di memoria per l'area di lavoro. Idealmente dovrebbe essere 0

4. Impostazione del monitor delle prestazioni per SQL Server(Windows Vista / Server 2008 e versioni successive)

Per prima cosa dobbiamo creare un contenitore per gestire i contatori più facilmente:

  • Per Windows Vista/Server 2008 e versioni successive, è possibile creare set di raccolta dati in questa sezione.
  • Per Windows XP / Server 2003 e versioni precedenti, è possibile creare registri contatori in la prossima sezione.

4.1 Cosa sono i set di raccolta dati?

I Data Collector Set organizzano contatori delle prestazioni, dati di tracciamento degli eventi e informazioni sulla configurazione del sistema in un'unica unità di raccolta. Offrono maggiore flessibilità rispetto ai semplici registri dei contatori e consentono la raccolta dati automatizzata e pianificata per un monitoraggio completo delle prestazioni del database SQL.

4.2 Creazione di un set di raccolta dati

Crea un set di raccolta dati personalizzato da monitorare SQL Server contatori delle prestazioni:

  1. Apri Performance Monitor
  2. Espandere Set di raccolta dati
  3. Fare clic con Definito dall'utente
  4. Seleziona New -> Set di raccolta dati
    Crea un nuovo set di raccolta dati in PerfMon
  5. Inserisci un nome descrittivo (ad esempio, "SQL Server Metriche delle prestazioni”)
  6. Seleziona Crea manualmente (avanzato)
    Imposta un nome descrittivo per il set di raccolta dati
  7. Clicchi Avanti
  8. Vedi Crea registri dati -> Contatore prestazioni
    Selezionare Crea registri dati -> Contatore prestazioni nella procedura guidata Crea nuovo set di raccolta dati.
  9. Clicchi Avanti
  10. Clicchi Aggiungi per selezionare i contatori
  11. Aggiungi desiderato SQL Server e contatori di sistema.
    Aggiungere contatori delle prestazioni al nuovo set di raccolta dati.
  12. Impostato Intervallo di campionamento
    • Per il monitoraggio di routine, utilizzare 1 minuto (60 secondi)
    • Per la risoluzione attiva dei problemi, utilizzare 15-30 secondi
    • Evitare di eseguire acquisizioni ad alta frequenza a lungo termine, poiché possono influire sulle prestazioni e generare dati eccessivi.

    Imposta l'intervallo di campionamento nella nuova procedura guidata Set di raccolta dati.

  13. Clicchi Avanti
  14. Scegli la posizione in cui salvare i registri
    Imposta la posizione in cui salvare i dati sulle prestazioni nella nuova procedura guidata Set di raccolta dati.
  15. Clicchi Finitura, verrà creato un nuovo set di raccolta dati.
  16. Per impostazione predefinita, il nuovo set di raccolta dati verrà NON avviarsi automaticamente. Devi trovarlo nel pannello di sinistra, sotto Cookie di prestazione -> Set di raccolta dati -> Definito dall'utente -> Il tuo Data Collector, fai clic con il pulsante destro del mouse e scegli Inizio
    Avvia un nuovo set di raccolta dati in PerfMon.

4.3 Contatori chiave da aggiungere

  • Memoria -> MByte disponibili
  • Disco fisico -> Media secondi/lettura disco (tutte le istanze tranne _Totale)
  • Disco fisico -> Media secondi/scrittura disco (tutte le istanze tranne _Totale)
  • Disco fisico -> Letture disco/sec (tutte le istanze tranne _Totale)
  • Disco fisico -> Scritture disco/sec (tutte le istanze tranne _Totale)
  • Processore -> % Tempo processore (tutte le istanze tranne _Totale)
  • SQLServer: Statistiche generali -> Connessioni utente
  • SQLServer: Memory Manager -> Memory Grants Pending
  • SQLServer: Statistiche SQL -> Richieste batch/sec
  • SQLServer: Statistiche SQL -> Compilazioni SQL/sec
  • SQLServer: Statistiche SQL -> Ricompilazioni SQL/sec
  • Sistema -> Lunghezza coda processore

4.4 Impostazione delle condizioni di arresto

Configurare le condizioni di arresto per impedire una crescita illimitata dei dati:

  1. Dopo aver creato il set di raccolta dati, fare clic con il pulsante destro del mouse e selezionare Proprietà a Confronto
  2. Clicca su Condizione di arresto linguetta
  3. Consentire a tutti Durata complessiva
  4. Imposta la durata su 1 giorno (24 ore)
  5. Clicchi OK salvare

Imposta la condizione di arresto per il set di raccolta dati

Ciò garantisce che il file di registro non diventi troppo grande e che il processo si riavvii automaticamente se programmato.

4.5 Pianificazione della raccolta dati

Automatizzare la raccolta dati per garantire un monitoraggio coerente:

  1. Fare clic con il pulsante destro del mouse sul set di raccolta dati e selezionare Proprietà a Confronto
  2. Clicca su Programma linguetta
  3. Clicchi Aggiungi per creare un nuovo programma
  4. Configura la data e l'ora di inizio
  5. Imposta uno schema di ricorrenza (ad esempio, giornaliero)
  6. Clicchi OK per salvare la programmazione

Imposta la pianificazione per il set di raccolta dati

Per l'avvio automatico, configura il Data Collector Set in modo che si avvii all'avvio del server creando un trigger di avvio in Utilità di pianificazione di Windows.

5. Impostazione del monitor delle prestazioni per SQL Server(Windows XP / Server 2003 e precedenti)

Per Windows XP/Server 2003 e versioni precedenti, è possibile creare registri contatori, che consentono di selezionare un set di contatori delle prestazioni e registrarli periodicamente in un file.

5.1 Creazione di registri dei contatori

Per creare un nuovo registro del contatore, segui questi passaggi:

  1. Apri Performance Monitor
  2. Espandere Registri delle prestazioni e avvisi nel riquadro di sinistra
  3. Fare clic con Registri dei contatori
  4. Seleziona Nuove impostazioni del registro
  5. Assegna al registro il nome del server del database (ad esempio, "ProductionSQL01")
  6. Clicchi OK per iniziare la configurazione

La creazione di registri dei contatori separati per ciascun server consente di testare le prestazioni su singoli server senza raccogliere dati per tutti i server contemporaneamente.

5.2 Aggiunta di contatori delle prestazioni

Dopo aver creato un registro dei contatori, aggiungi i contatori delle prestazioni specifici che desideri monitorare:

  1. Clicca su Aggiungi contatori pulsante
  2. Cambia il nome del computer in modo che punti al tuo SQL Server esempio
  3. Stampa Linguetta per caricare gli oggetti di prestazione disponibili
  4. Seleziona un oggetto di prestazione dal menu a discesa (ad esempio, Memorie)
  5. Scegli contatori specifici da la lista
  6. Selezionare le istanze, se applicabili (ad esempio, singoli processori o dischi).
  7. Clicchi Aggiungi per includere il contatore
  8. Ripetere per tutti i contatori desiderati
  9. Clicchi Chiudi Al termine

5.3 Configurazione degli intervalli di campionamento

L'intervallo di campionamento determina la frequenza con cui Performance Monitor raccoglie i dati. Configura gli intervalli appropriati in base alle tue esigenze di monitoraggio:

  1. Nelle proprietà del registro del contatore, individuare Dati campione ogni
  2. Imposta l'intervallo (il valore predefinito è 15 secondi)
  3. Per il monitoraggio di base, utilizzare intervalli di 1 minuto per la raccolta giornaliera
  4. Per la risoluzione dei problemi, utilizzare intervalli di 15-30 secondi per brevi raffiche
  5. Clicchi OK applicare

Ricorda che intervalli più brevi generano più dati, che possono essere più difficili da visualizzare e analizzare. Intervalli più ampi potrebbero perdere picchi importanti. Bilancia la granularità dei dati con i requisiti di archiviazione e analisi.

5.4 Configurazione dei file di registro

Una corretta configurazione del file di registro garantisce che i dati vengano archiviati in modo efficiente e accessibile:

  1. Clicca su Log files scheda nelle proprietà del registro del contatore
  2. Cambia il tipo di file di registro in File di testo (delimitato da virgole) per una facile importazione in Excel
  3. Clicchi Configurazione
  4. Imposta il percorso del file su una posizione dedicata (ad esempio, una cartella PerformanceLogs condivisa)
  5. Clicchi OK per confermare

Utilizza una condivisione accessibile in rete per l'archiviazione dei registri, in modo da poter accedere ai file in remoto e condividerli con altri utenti.

5.5 Impostazione delle credenziali

Configurare le credenziali appropriate in modo che Performance Monitor possa accedere in remoto SQL Server istanze:

  1. Nelle proprietà del registro del contatore, individuare Correre come
  2. Inserisci il nome utente del tuo dominio nel formato: DOMINIO\nome utente
  3. Clicchi Imposta password
  4. Inserisci e conferma la tua password
  5. Clicchi OK salvare

Ciò consente al servizio PerfMon di raccogliere statistiche utilizzando le autorizzazioni del tuo dominio anziché le proprie credenziali.

6. Analisi dei dati del Performance Monitor

6.1 Visualizzazione dei file di registro in Performance Monitor

Performance Monitor può visualizzare i dati storici dai file di registro salvati:

  1. Apri Performance Monitor
  2. Nel riquadro sinistro, fare clic Strumenti di monitoraggio -> performance Monitor.
  3. Fare clic con il tasto destro del mouse in un punto qualsiasi dell'area del grafico
  4. Seleziona Proprietà a Confronto
    Per aprire le proprietà in PerfMon, fare clic con il pulsante destro del mouse in un punto qualsiasi dell'area del grafico.
  5. Clicca su Fonte linguetta
  6. Seleziona Log files  pulsante di scelta
  7. Clicchi Aggiungi
  8. Vai al tuo file di registro (.blg o .csv)
  9. Seleziona il file e fai clic Apri
    Imposta il file di registro come origine della grafica in PerfMon.
  10. Usa il Intervallo di tempo cursore per selezionare il periodo che si desidera analizzare
  11. Clicchi OK per chiudere la finestra di dialogo Proprietà
  12. Fare clic sull'icona verde più per aggiungere contatori dal file di registro
    Fare clic sull'icona verde più per aggiungere contatori dal file di registro in PerfMon.
  13. Seleziona i contatori desiderati da visualizzare
    Aggiungere i contatori desiderati al grafico in PerfMon.
  14. Clicchi OK

Il grafico ora mostrerà i dati storici dal file di registro. Utilizza il cursore "Intervallo di tempo" in "Proprietà" per restringere i periodi di tempo specifici e ottenere un'analisi dettagliata.

6.2 Esportazione dei dati in Excel

Excel offre potenti funzionalità di analisi per i dati dei contatori delle prestazioni:

  1. Apri Performance Monitor con il tuo file di registro caricato
  2. Fare clic con il tasto destro del mouse in un punto qualsiasi dell'area del grafico
  3. Seleziona Salva dati come
  4. Scegli una posizione per il file
  5. Seleziona File di testo (delimitato da virgole) (.csv) dal menu a discesa
  6. Clicchi Salva
  7. Aprire il file CSV in Excel

Esportare i dati in un file in PerfMon.

Formattare i dati esportati per una migliore analisi:

  1. Elimina la riga 2 semivuota e cancella la cella A1
  2. Formatta la colonna A come Data/Ora
  3. Formatta le colonne numeriche con zero decimali e separatore delle migliaia
  4. Trova e sostituisci i nomi dei server nelle intestazioni (ad esempio, sostituisci "\\SERVERNAME" con uno spazio vuoto)
  5. Pulisci i nomi degli oggetti nelle intestazioni (ad esempio, "Memoria", "Disco fisico", "Processore")
  6. Ridurre la dimensione del carattere dell'intestazione a 8 punti per una migliore visibilità

6.3 Interpretazione dei valori del contatore

6.3.1 Analisi del contatore di memoria

Quando si analizzano i contatori di memoria, cercare questi indicatori:

  • MByte disponibili: Dovrebbe rimanere costantemente sopra i 4096 MB
  • Aspettativa di vita della pagina: Valori superiori a 300 secondi indicano una memoria sana. Valori inferiori suggeriscono una memoria sotto pressione.
  • Rapporto di hit della cache buffer: Dovrebbe soddisfare o superare il 99%. Valori inferiori indicano letture eccessive del disco
  • Sovvenzioni per la memoria in sospeso: Dovrebbe essere sempre 0. Qualsiasi valore positivo indica una carenza di memoria.

6.3.2 Analisi del contatore della CPU

Gli indicatori delle prestazioni della CPU includono:

  • % Tempo di elaborazione: Un utilizzo prolungato superiore al 75% indica problemi di prestazioni. Picchi fino al 100% sono normali, ma non dovrebbero persistere.
  • Lunghezza della coda del processore: I valori superiori a 1 indicano la pressione della CPU. Controlla Task Manager per identificare quali processi consumano CPU.
  • % Tempo privilegiato: Dovrebbe rimanere tra il 5 e il 10%. Valori superiori al 25% suggeriscono operazioni di I/O eccessive

6.3.3 Analisi del contatore del disco

Soglie di prestazioni del disco:

  • Media secondi su disco/lettura e scrittura: Dovrebbe rimanere al di sotto di 10-20 ms. Valori più alti indicano sottosistemi di dischi lenti
  • Lunghezza della coda del disco: Valori costantemente superiori a 2 (o 2 per disco in RAID) indicano colli di bottiglia I/O
  • % Tempo disco: Valori sostenuti superiori all'85% indicano la saturazione del disco

6.4 Utilizzo di formule e statistiche

Aggiungi formule statistiche a Excel per un'analisi rapida:

  1. Inserisci 7 righe vuote nella parte superiore del tuo foglio di calcolo
  2. Aggiungere etichette nella colonna A: Media, Mediana, Min, Max, Deviazione standard
  3. Nella cella B2, inserisci: =MEDIA(B9:B100) (adatta B100 all'ultima riga di dati)
  4. Nella cella B3, immettere: =MEDIANA(B9:B100)
  5. Nella cella B4, immettere: =MIN(B9:B100)
  6. Nella cella B5, immettere: =MAX(B9:B100)
  7. Nella cella B6, immettere: =DEV.ST(B9:B100)
  8. Copia le formule in tutte le colonne del contatore
  9. Selezionare la cella B9 e premere Alt+W+F+Invio per bloccare i riquadri

Queste statistiche aiutano a identificare tendenze, valori anomali e intervalli operativi normali per ciascun contatore.

7. Strumento di analisi delle prestazioni per i registri (PAL)

7.1 Introduzione a PAL

Performance Analysis for Logs (PAL) è uno strumento gratuito sviluppato da Clint Huffman che analizza i log di Performance Monitor e genera report HTML con analisi delle soglie. PAL confronta i dati sulle prestazioni con soglie note e fornisce raccomandazioni dettagliate per SQL Server ottimizzazione delle prestazioni.

Scarica PAL dal repository GitHub: https://github.com/clinthuffman/PAL Link Esterno

7.2 Impostazione PAL

Installa PAL seguendo questi passaggi:

  1. Scarica il file di installazione PAL da GitHub
  2. Eseguire il programma di installazione
  3. Clicchi Avanti nella schermata di benvenuto
  4. Rivedere e accettare la directory di installazione
  5. Clicchi Avanti continuare
  6. Clicchi Installazione per iniziare l'installazione
  7. Attendere che l'installazione venga completata
  8. Clicchi Finitura

7.3 Elaborazione dei file di registro con PAL

Analizza i log di Performance Monitor utilizzando PAL:

  1. Avvia PAL dal menu Start o dalla directory di installazione.
  2. Clicca su Registro contatore linguetta
  3. Clicchi Scopri la nostra gamma di prodotti per selezionare il tuo file .blg
  4. Vai al file di registro di Performance Monitor
  5. Clicchi Apri
  6. Clicca su File di soglia linguetta
  7. Selezionare un file di soglia dal menu a discesa (ad esempio, "SQL Server 2016” )
  8. Clicca su Domande linguetta
  9. Rispondi alle domande sulla configurazione del tuo sistema
  10. Specifica se il tuo SQL Server è OLTP o Data Warehouse
  11. Inserisci la RAM totale disponibile
  12. Clicca su Opzioni di output linguetta
  13. Seleziona una directory di output per il report HTML
  14. Vedi HTML formato di output
  15. Clicca su Eseguire linguetta
  16. Rivedi le tue selezioni
  17. Vedi Avviare l'esecuzione ora
  18. Clicchi Finitura

7.4 Analisi dei report PAL

Dopo aver completato l'analisi, PAL genera un report HTML contenente:

  • Riepilogo esecutivo dei problemi di performance
  • Analisi dettagliata del contatore con grafici
  • Violazioni della soglia evidenziate a colori
  • Raccomandazioni specifiche per ogni problema
  • Tendenze e modelli storici

Il report utilizza una codifica a colori per indicare la gravità: rosso per problemi critici, giallo per avvisi e verde per parametri sani. Esamina ogni sezione per comprendere i colli di bottiglia delle prestazioni e seguire le raccomandazioni di PAL per l'ottimizzazione.

8. Alternativa SQL Server Strumenti di monitoraggio

8.1 Built-in SQL Server Strumenti

8.1.1 SQL Server Activity Monitor

SQL Server Activity Monitor visualizza informazioni in tempo reale su SQL Server processi e prestazioni:

  1. Apri SQL Server Management Studio (SSMS) e connettiti all'istanza del tuo server
  2. Fare clic con il pulsante destro del mouse sul nome del server in Esplora oggetti
  3. Seleziona Activity Monitor
    Avvia Monitoraggio Attività in SQL Server Studio di gestione.

Activity Monitor mostra processi, attese delle risorse, I/O dei file di dati e query costose recenti. Fornisce informazioni rapide sull'attività corrente del database, ma non memorizza i dati storici.

Monitoraggio attività in SQL Server

8.1.2 SQL Server Dashboard delle prestazioni

SQL Server Management Studio include report sulle prestazioni integrati:

  1. In SQL Server Management Studio (SSMS), fare clic con il pulsante destro del mouse su SQL Server istanza in Esplora oggetti
  2. Seleziona Report -> Rapporti standard
  3. Scegli tra i report disponibili come Dashboard delle prestazioni
    Apri Dashboard delle prestazioni in SQL Server Studio di gestione.

La dashboard delle prestazioni fornisce informazioni visive su SQL Server Prestazioni dell'istanza, inclusi l'utilizzo della CPU di sistema, le richieste in attesa correnti e le metriche delle prestazioni. È possibile accedervi tramite il menu Report standard.

Dashboard delle prestazioni in SQL Server Studio di gestione

8.1.3 SQL Server Profiler

SQL Server Profiler cattura e analizza SQL Server eventi quali l'esecuzione di query, operazioni di transazione e attività di accesso.

Per iniziare SQL Server profilatore:

  1. In SQL Server Management Studio, clicca Strumenti -> SQL Server Profiler
    Inizio SQL Server Profilatore in SQL Server Studio di gestione.

Profiler introduce un notevole sovraccarico prestazionale, quindi utilizzatelo con cautela e preferibilmente durante le ore di minore affluenza. Nella maggior parte dei casi, Extended Events offre prestazioni migliori con un impatto minore.

SQL Server Profiler

8.1.4 Eventi estesi

Eventi estesi è un sistema di monitoraggio delle prestazioni leggero integrato in SQL ServerSostituisce SQL Server Profiler con prestazioni migliori e costi generali inferiori.

Le caratteristiche principali includono:

  • Monitoraggio dettagliato di eventi specifici
  • Impatto minimo sulle prestazioni
  • Sessioni di eventi personalizzabili
  • Integrazione con SSMS e altri strumenti
  • Supporto per filtraggio e aggregazione complessi

Creare sessioni di eventi estesi tramite SSMS:

  1. In Esplora oggetti, espandi il tuo server e vai su Gestione -> Eventi estesi -> Sessioni
  2. Fare clic con il tasto destro del mouse su Sessioni e scegli Nuova procedura guidata di sessione
    Avvia una nuova sessione di Eventi estesi in SQL Server Studio di gestione.
  3. Segui le istruzioni per avviare una nuova sessione.

8.1.5 Viste di gestione dinamica (DMV)

I DMV espongono informazioni dettagliate sullo stato del server per monitorarne lo stato, diagnosticare problemi e ottimizzare le prestazioni. I principali DMV includono:

  • sys.dm_exec_query_stats: Statistiche sulle prestazioni delle query
  • sys.dm_os_wait_stats: Tipi di attesa che influiscono sulle prestazioni del server
  • sys.dm_os_performance_counters: SQL Server dati del contatore delle prestazioni
  • richieste di esecuzione di sys.dm: Richieste in esecuzione al momento
  • sessioni di sys.dm_exec: Sessioni utente attive

Interroga queste viste utilizzando T-SQL per accedere ai dati sulle prestazioni in tempo reale e alle metriche storiche.

Utilizzo di base

-- See all active connections
SELECT * FROM sys.dm_exec_connections;

-- View current sessions
SELECT * FROM sys.dm_exec_sessions;

-- Check database file stats
SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL);

8.2 Soluzioni di monitoraggio di terze parti

Monitor SQL Redgate

Redgate SQL Monitor è specializzato nel monitoraggio SQL Server e ambienti di database SQL di Azure. Offre monitoraggio a livello aziendale, avvisi e dashboard personalizzabili, funzionalità di reporting dettagliate e integrazione con altri strumenti Redgate.

Porta Rossa SQL Server Monitorare

SolarWinds SQL Server Strumento di monitoraggio

I venti solari SQL Server Lo strumento di monitoraggio, noto anche come SQL Sentry, è progettato per diagnosticare, risolvere e prevenire gravi problemi di prestazioni con SQL Server.

SolarWinds SQL Server Strumento di monitoraggio

IDERA SQL Server Strumento di monitoraggio delle prestazioni

IDERA SQL Diagnostic Manager è un potente SQL Server Strumento di monitoraggio delle prestazioni progettato per supportare il monitoraggio proattivo, la diagnostica e l'ottimizzazione delle prestazioni.

IDERA SQL Server Strumento di monitoraggio delle prestazioni

Monitoraggio SQL di Applications Manager

Applications Manager offre un servizio Microsoft SQL Server Strumento di monitoraggio che fornisce soluzioni IT utili. È progettato per supervisionare le prestazioni dei database SQL, identificando contemporaneamente bug e risolvendo problemi che potrebbero causare interruzioni nelle operazioni di un'organizzazione.

Monitoraggio SQL di Applications Manager

8.3 Strumenti di monitoraggio open source

DBA Dash

DBA Dash è uno strumento di monitoraggio gratuito e open source che fornisce approfondimenti su SQL Server Salute, prestazioni e attività. È particolarmente utile per ambienti di piccole e medie dimensioni e include controlli DBA giornalieri, monitoraggio delle prestazioni e tracciamento della configurazione.

SQLWATCH

SQLWATCH offre un'analisi decentralizzata, quasi in tempo reale SQL Server Monitoraggio con granularità di 5 secondi per l'acquisizione dei picchi di carico di lavoro. Supporta Grafana per dashboard in tempo reale e Power BI per analisi approfondite. Lo strumento offre ampie opzioni di configurazione, zero requisiti di manutenzione e scalabilità illimitata.

Osservatore

Sviluppato da Stack Exchange, Opserver monitora più sistemi tra cui SQL Server, Redis ed Elasticsearch. Fornisce una vista "di tutti i server" per le statistiche di CPU, memoria, rete e hardware nell'intera infrastruttura.

sp_WhoIsActive

sp_WhoIsActive è una stored procedure completa per il monitoraggio delle attività creata da Adam Machanic. Funziona con tutti SQL Server versioni dal 2005 alle versioni attuali ed è ampiamente utilizzato da SQL Server DBA per il monitoraggio delle attività in tempo reale.

Per utilizzare sp_WhoIsActive, scaricalo da http://whoisactive.com/, installalo nel tuo database ed esegui:

EXEC sp_WhoIsActive

La procedura mostra le query attualmente in esecuzione, le informazioni di attesa, i dettagli sui blocchi e il consumo di risorse.

9. Migliori pratiche per SQL Server performance Monitor

9.1 Definizione delle linee di base delle prestazioni

Le linee di base delle prestazioni stabiliscono i normali parametri operativi per il tuo SQL Server ambiente. Senza linee di base, non è possibile determinare se le metriche attuali indicano problemi o rappresentano un comportamento tipico.

Crea linee di base tramite:

  1. Raccolta di dati sulle prestazioni durante le normali operazioni per almeno una settimana
  2. Acquisizione di metriche sia durante le ore di punta che durante quelle di minore affluenza
  3. Documentazione dei valori tipici per i contatori chiave
  4. Registrazione delle variazioni stagionali, se presenti.
  5. Memorizzazione dei dati di base per il confronto con le metriche future

Aggiornare le linee di base trimestralmente o dopo modifiche significative all'infrastruttura, aggiornamenti delle applicazioni o modifiche del database.

9.2 Impostazione di soglie di avviso appropriate

Configura soglie intelligenti per ricevere avvisi significativi senza essere sopraffatto dalle notifiche:

  • Concessioni di memoria in sospeso > 0 indica pressione di memoria
  • La lunghezza della coda del processore > 2 per core suggerisce un collo di bottiglia della CPU
  • Disco sec/lettura o scrittura > 20 ms indica I/O lento
  • Processi bloccati > 5 segnalano problemi di contesa
  • L'aspettativa di vita della pagina < 300 secondi indica pressione sulla memoria

Regola le soglie in base ai dati di base e alle caratteristiche specifiche del carico di lavoro. Utilizza soglie adattive che tengano conto delle normali variazioni del tuo ambiente.

9.3 Revisione e analisi regolare dei dati

Pianificare revisioni periodiche delle prestazioni per identificare tendenze e problemi emergenti:

  • Giornaliero: esamina le metriche di alto livello e gli avvisi recenti
  • Settimanale: condurre un'analisi approfondita delle tendenze delle prestazioni
  • Mensilmente: genera report completi e confrontali con i valori di riferimento
  • Trimestrale: rivedere la pianificazione della capacità e le tendenze a lungo termine

Documentare i risultati e monitorare i miglioramenti delle prestazioni nel tempo.

9.4 Monitoraggio del bilanciamento dei costi generali

Il monitoraggio stesso consuma risorse, quindi bilancia la raccolta dati con l'impatto sulle prestazioni:

  • Utilizzare intervalli di 30-60 secondi per il monitoraggio continuo
  • Utilizzare intervalli di 15 secondi solo per la risoluzione attiva dei problemi
  • Limita la durata del set di raccolta dati per evitare dati eccessivi
  • Memorizzare i registri su unità separate dai file del database
  • Archivia i vecchi dati sulle prestazioni per mantenere dimensioni di file gestibili

Se configurato correttamente, Performance Monitor aggiunge un overhead minimo, in genere inferiore al 2% delle risorse di sistema.

9.5 Conservazione dei dati a lungo termine

Conservare i dati sulle prestazioni per un'analisi significativa delle tendenze e una pianificazione della capacità:

  • Conservare almeno 1-2 anni di dati sulle prestazioni
  • Archiviare i dati in un archivio separato dopo 3-6 mesi
  • Comprimi i file di registro più vecchi per risparmiare spazio
  • Documentare eventuali eventi o cambiamenti significativi che influiscono sulle prestazioni

Considerate le dimensioni relativamente ridotte dei dati dei contatori delle prestazioni, conservarli a tempo indeterminato è spesso fattibile e utile per analisi a lungo termine.

9.6 Integrazione con le pratiche DevOps

Incorporare il monitoraggio delle prestazioni del database nelle pipeline CI/CD:

  • Includere le metriche delle prestazioni del database nella convalida della distribuzione
  • Automatizza i test delle prestazioni per le nuove versioni
  • Verificare che le modifiche al codice non abbiano un impatto negativo sulle prestazioni
  • Creare benchmark delle prestazioni per ogni versione
  • Integrare gli avvisi di monitoraggio con i sistemi di gestione degli incidenti

10. Risoluzione dei problemi comuni di prestazioni

10.1 Identificazione dei colli di bottiglia della CPU

I colli di bottiglia della CPU si manifestano con tempi di risposta lenti alle query e un elevato utilizzo del processore. Per diagnosticare i problemi della CPU, seguire questi passaggi:

  1. Controllare il contatore della lunghezza della coda del processore. Valori superiori a 2 per core indicano la pressione della CPU
  2. Esaminare la % del tempo del processore. Valori sostenuti superiori al 75% suggeriscono un collo di bottiglia della CPU
  3. Desktop remoto per il SQL Server
  4. Apri Task Manager (Ctrl+Maiusc+Esc)
  5. Clicca su Processi linguetta
  6. Vedi Mostra i processi di tutti gli utenti
  7. Clicca su CPU intestazione di colonna per ordinare in base all'utilizzo della CPU
  8. Identificare quali processi consumano risorse della CPU

Se non-SQL Server Le applicazioni consumano molta CPU, rimuoverle dal server del database. Se sqlservr.exe utilizza molta CPU, verificare utilizzando questi metodi:

  • Controllare le compilazioni SQL/sec e le ricompilazioni SQL/sec. Valori superiori al 10% di richieste batch/sec indicano una compilazione eccessiva
  • Eseguire una query su sys.dm_exec_query_stats per identificare le query che richiedono un uso intensivo della CPU
  • Esaminare i piani di esecuzione per indici mancanti o operazioni inefficienti
  • Valutare l'aggiunta di indici per ridurre le scansioni delle tabelle

10.2 Diagnosi dei problemi di memoria

I problemi di memoria hanno un impatto significativo SQL Server prestazioni. Diagnostica i problemi di memoria utilizzando questi indicatori:

Drop di memoria disponibili

Se i MB disponibili scendono costantemente al di sotto dei 100 MB, il sistema operativo rischia di esaurire la memoria. Windows potrebbe effettuare il paging. SQL Server memoria su disco, causando un degrado delle prestazioni.

Bassa aspettativa di vita della pagina

Un'aspettativa di vita della pagina inferiore a 300 secondi indica un elevato turnover della cache buffer. Ciò suggerisce un'allocazione di memoria insufficiente o un'eccessiva pressione sulla memoria da parte delle query.

Basso rapporto di hit della cache buffer

Un rapporto di hit della cache buffer inferiore al 99% significa SQL Server legge frequentemente i dati dal disco anziché dalla memoria. Ciò si verifica quando il buffer pool è troppo piccolo o SQL Server si sta ancora riscaldando dopo il riavvio.

Concessioni di memoria in sospeso

Qualsiasi valore superiore a 0 per Memory Grants Pending indica che le query sono in attesa di concessioni di memoria. Ciò rappresenta una carenza critica di memoria che richiede attenzione immediata.

Per risolvere i problemi di memoria:

  1. Configurazione SQL Server impostazione di memoria massima per lasciare una quantità di RAM adeguata per il sistema operativo (in genere 4-8 GB a seconda delle dimensioni del server)
  2. Abilita l'autorizzazione "Blocca pagine in memoria" per SQL Server account di servizio
  3. Aggiungere più RAM fisica al server se la pressione della memoria persiste
  4. Identificare e ottimizzare le query che richiedono molta memoria

10.3 Risoluzione dei problemi di I/O del disco

L'I/O su disco diventa spesso il principale collo di bottiglia delle prestazioni nei sistemi di database. Diagnostica i problemi del disco utilizzando questi metodi:

Lunghezza elevata della coda del disco

Una lunghezza della coda del disco costantemente superiore a 2 (o 2 per disco per RAID) indica che il sottosistema del disco non riesce a tenere il passo con le richieste di I/O. Ciò crea un arretrato di operazioni in sospeso.

Latenza eccessiva del disco

Valori di Media sec/lettura disco e Media sec/scrittura disco superiori a 10-20 ms indicano una risposta lenta del disco. Le unità di registro delle transazioni richiedono prestazioni particolarmente elevate, idealmente inferiori a 5 ms per le scritture.

Alta % Tempo su disco

Un utilizzo prolungato del disco superiore all'85% indica saturazione del disco. Il disco trascorre la maggior parte del tempo elaborando richieste di I/O, con poca capacità disponibile inutilizzata.

Prima di affrontare i problemi del disco, verifica che non siano sintomi di problemi di memoria. Una memoria insufficiente forza SQL Server per leggere più dati dal disco, gonfiando artificialmente le metriche del disco.

Per risolvere i problemi di I/O del disco originali:

  • Passa a dischi più veloci (SSD invece di HDD)
  • Implementare configurazioni RAID per prestazioni migliori
  • Separare i file di database, i registri delle transazioni e tempdb su unità fisiche diverse
  • Aggiungere più memoria per ridurre le letture del disco
  • Ottimizzare gli indici per ridurre l'I/O non necessario
  • Esaminare e ottimizzare le query con prestazioni scarse

10.4 Indirizzamento di blocchi e deadlock

Il blocco si verifica quando una sessione mantiene blocchi che impediscono ad altre sessioni di procedere. Monitora questi contatori per identificare problemi di blocco:

  • Processi bloccati: Dovrebbe essere idealmente 0
  • Attese di blocco/sec: Numero di richieste di blocco che richiedono attese
  • Tempo medio di attesa: Durata media delle attese di blocco

Per indagare sul blocco:

  1. Apri Activity Monitor in SSMS
  2. espandere la Processi pagina
  3. Cerca processi con valori diversi da zero Bloccato da valori
  4. Identificare l'ID della sessione di blocco
  5. Esaminare le query che causano il blocco

Utilizzare sp_WhoIsActive per un'analisi più dettagliata dei blocchi. Un numero eccessivo di voci wait_info spesso indica problemi di contesa o blocco di tempdb.

Per ridurre i blocchi:

  • Ridurre al minimo la durata della transazione
  • Utilizzare livelli di isolamento appropriati
  • Aggiungere indici per ridurre la durata del blocco
  • Considerare l'isolamento READ_COMMITTED_SNAPSHOT
  • Esaminare e ottimizzare le query di lunga durata

10.5 Problemi di prestazioni delle query

Identificare le query costose è essenziale per il monitoraggio delle prestazioni di SQL. Utilizza questi metodi per individuare le query problematiche:

Utilizzo di Activity Monitor

  1. In SSMS, fare clic con il pulsante destro del mouse sul nome del server
  2. Seleziona Activity Monitor
  3. Espandere Query costose recenti
  4. Esamina le query con CPU elevata, durata o letture logiche

Utilizzo dei DMV

Eseguire una query su sys.dm_exec_query_stats per identificare le query che richiedono molte risorse:

SELECT TOP 50
    total_worker_time/execution_count AS avg_cpu_time,
    total_logical_reads/execution_count AS avg_logical_reads,
    execution_count,
    SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(qt.text)
            ELSE qs.statement_end_offset
        END - qs.statement_start_offset)/2) + 1) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY total_worker_time DESC

Analisi dei piani di esecuzione

  1. In SSMS, apri una nuova finestra di query
  2. Clicchi Visualizza il piano di esecuzione stimato (Ctrl+L) o Includere il piano di esecuzione effettivo (Ctrl+M)
  3. Esegui la tua query
  4. Rivedere il piano di esecuzione per le operazioni costose
  5. Cerca scansioni di tabelle, scansioni di indici o operazioni ad alto costo

Ottimizza le query:

  • Aggiunta di indici appropriati
  • Riscrivere le query per evitare operazioni costose
  • Aggiornamento delle statistiche
  • Utilizzo di nomi di colonna specifici anziché SELECT *
  • Evitare clausole DISTINCT o ORDER BY non necessarie

10.6 Rileva e correggi database corrotti

Il danneggiamento del database può causare degrado delle prestazioni, perdita di dati e guasti del sistema. Rilevare e risolvere rapidamente i problemi di danneggiamento è fondamentale per preservare l'integrità del database.

Indicatori di corruzione del database

Fai attenzione a questi segnali di potenziale corruzione:

  • Messaggi di errore in SQL Server registro degli errori (errore 823, 824 o 825)
  • Errori imprevisti dell'applicazione durante l'accesso a tabelle specifiche
  • Prestazioni di query lente su query precedentemente veloci
  • SQL Server arresti anomali o riavvii imprevisti
  • Pagine sospette che compaiono nella tabella msdb.dbo.suspect_pages

Utilizzo di DBCC CHECKDB per il rilevamento

DBCC CHECKDB è lo strumento principale per rilevare la corruzione del database. Eseguilo regolarmente per individuare tempestivamente i problemi.

Monitoraggio delle pagine sospette

SQL Server registra automaticamente le pagine sospette nel database msdb:

SELECT 
    database_id,
    file_id,
    page_id,
    event_type,
    error_count,
    last_update_date
FROM msdb.dbo.suspect_pages
WHERE event_type IN (1,2,3)

Tutte le righe restituite indicano problemi di danneggiamento che richiedono attenzione immediata.

Strategie di prevenzione della corruzione

  • Abilita la verifica della pagina con l'opzione CHECKSUM
  • Mantenere backup regolari del database
  • Utilizzare hardware affidabile con correzione degli errori
  • Monitorare lo stato del disco utilizzando gli strumenti del produttore
  • Pianificare esecuzioni regolari di DBCC CHECKDB
  • mantenere SQL Server aggiornato con le ultime patch

Opzioni di ripristino e riparazione

Se vengono rilevati dei danneggiamenti, puoi provare lo strumento integrato DBCC CHECKDB per risolverli. Se fallisce, utilizzare strumenti di terze parti come DataNumen SQL Recovery che può far fronte a gravi corruzioni.

11. Tecniche di monitoraggio avanzate

11.1 Monitoraggio dell'archivio query

Query Store, introdotto in SQL Server 2016, acquisisce automaticamente i dati sulle prestazioni delle query. Fornisce informazioni preziose sul comportamento delle query, sui piani di esecuzione e sulle tendenze delle prestazioni.

Abilitazione di Query Store

  1. In SSMS Object Explorer, fare clic con il pulsante destro del mouse su un database
  2. Seleziona Proprietà a Confronto
  3. Clicca su QueryStore pagina
  4. In Modalità operativa (richiesto), selezionare Leggi scrivi
  5. Configurare impostazioni aggiuntive secondo necessità
  6. Clicchi OK

Monitoraggio delle prestazioni delle query

Accedi ai report di Query Store tramite Object Explorer:

  1. Espandi il database in Esplora oggetti
  2. Espandere QueryStore
  3. Seleziona tra i report disponibili:
    • Query regredite
    • Consumo complessivo delle risorse
    • Query che consumano più risorse
    • Query con piani forzati
    • Query tracciate

Rilevamento della regressione del piano

Query Store rileva automaticamente quando i piani di esecuzione delle query cambiano e le prestazioni peggiorano. Esamina il report Query regredite per identificare le query interessate dalle modifiche al piano.

Gestione del piano forzato

Quando Query Store identifica un piano di esecuzione migliore, forza SQL Server per utilizzarlo:

  1. Apri la query in Query Store
  2. Fare clic con il pulsante destro del mouse sul piano desiderato
  3. Seleziona Piano di forza

Ciò migliora immediatamente le prestazioni senza richiedere modifiche al codice.

11.2 Monitoraggio della manutenzione dell'indice

La frammentazione degli indici riduce le prestazioni delle query nel tempo. Monitorare e gestire regolarmente gli indici per garantire prestazioni ottimali.

Controllo della frammentazione

Utilizzare questa query per verificare la frammentazione dell'indice:

SELECT 
    OBJECT_NAME(i.object_id) AS table_name,
    i.name AS index_name,
    ps.avg_fragmentation_in_percent,
    ps.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id 
    AND ps.index_id = i.index_id
WHERE ps.avg_fragmentation_in_percent > 10
    AND ps.page_count > 1000
ORDER BY ps.avg_fragmentation_in_percent DESC

Eseguire questa query durante le ore non di punta, poiché potrebbe richiedere molte risorse.

Analisi della densità della pagina

La densità di pagina indica quanto sono piene le pagine indice. Una densità bassa spreca spazio e riduce le prestazioni:

SELECT 
    OBJECT_NAME(i.object_id) AS table_name,
    i.name AS index_name,
    ps.avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id 
    AND ps.index_id = i.index_id
WHERE ps.avg_page_space_used_in_percent < 75

Decisioni di riorganizzazione vs ricostruzione

Scegliere le operazioni di manutenzione dell'indice in base ai livelli di frammentazione:

  • Frammentazione 10-30%: utilizzare ALTER INDEX REORGANIZE
  • Frammentazione > 30%: utilizzare ALTER INDEX REBUILD
  • Frammentazione < 10%: nessuna azione necessaria

Le operazioni di riorganizzazione richiedono meno risorse e possono essere eseguite online. Le operazioni di ricostruzione sono più approfondite, ma consumano risorse significative.

11.3 Aggiornamenti delle statistiche del database

Aiuto con le statistiche del database SQL ServerL'ottimizzatore di query di crea piani di esecuzione efficienti. Statistiche obsolete causano scarse prestazioni delle query.

Ricostruzione automatica delle statistiche

Abilita gli aggiornamenti automatici delle statistiche:

ALTER DATABASE DatabaseName SET AUTO_UPDATE_STATISTICS ON
ALTER DATABASE DatabaseName SET AUTO_CREATE_STATISTICS ON

Monitoraggio delle statistiche sanitarie

Controlla quando le statistiche sono state aggiornate l'ultima volta:

SELECT 
    OBJECT_NAME(s.object_id) AS TableName,
    s.name AS StatisticsName,
    STATS_DATE(s.object_id, s.stats_id) AS LastUpdated,
    sp.rows,
    sp.modification_counter
FROM sys.stats s
CROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) sp
WHERE STATS_DATE(s.object_id, s.stats_id) < DATEADD(DAY, -7, GETDATE())
ORDER BY LastUpdated

Aggiornare manualmente le statistiche quando necessario:

UPDATE STATISTICS TableName WITH FULLSCAN

11.4 Raccolta di dati sulle prestazioni personalizzati

Crea soluzioni personalizzate di monitoraggio delle prestazioni interrogando direttamente sys.dm_os_performance_counters e memorizzando i risultati nelle tabelle.

Creazione di script di raccolta personalizzati

Creare una stored procedure per raccogliere i dati del contatore delle prestazioni:

CREATE PROCEDURE dbo.CollectPerformanceCounters
AS
BEGIN
    INSERT INTO dbo.PerformanceHistory (
        SampleTime,
        CounterName,
        CounterValue
    )
    SELECT 
        GETDATE(),
        counter_name,
        cntr_value
    FROM sys.dm_os_performance_counters
    WHERE counter_name IN (
        'Page life expectancy',
        'Batch Requests/sec',
        'Buffer cache hit ratio'
    )
END

Utilizzo di sys.dm_os_performance_counters

Interroga direttamente i contatori delle prestazioni:

SELECT 
    object_name,
    counter_name,
    instance_name,
    cntr_value,
    cntr_type
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Buffer Manager%'
ORDER BY counter_name

Memorizzazione dei dati storici

Crea una tabella per memorizzare le metriche delle prestazioni nel tempo:

CREATE TABLE dbo.PerformanceHistory (
    ID INT IDENTITY PRIMARY KEY,
    SampleTime DATETIME2 NOT NULL,
    PageLifeExpectancy BIGINT,
    BatchRequestsPerSec DECIMAL(18,4),
    BufferCacheHitRatio DECIMAL(5,2)
)

CREATE CLUSTERED COLUMNSTORE INDEX CCI_PerformanceHistory 
ON dbo.PerformanceHistory

Metodi di archiviazione dei dati pivotati

Memorizzare i dati in formato pivot con una riga per ogni tempo di campionamento e una colonna per contatore. Questo riduce lo spazio di archiviazione e migliora le prestazioni delle query rispetto all'archiviazione di una riga per contatore per campione.

11.5 Monitoraggio multi-server

Per ambienti con più SQL Server istanze, implementare il monitoraggio centralizzato.

Approccio di monitoraggio centralizzato

  • Creare un database di monitoraggio dedicato su un server separato
  • Raccogliere i dati da tutti i server nel repository centrale
  • Usa il SQL Server Lavori dell'agente per eseguire script di raccolta
  • Implementare la raccolta di contatori delle prestazioni accessibili in rete

Monitoraggio del server remoto

Configura Performance Monitor per raccogliere dati da server remoti specificando i nomi dei server quando aggiungi i contatori. Assicurati che le regole del firewall consentano il traffico di Performance Monitor.

Report tra server

Crea report che confrontano le prestazioni di più server per identificare valori anomali e squilibri di capacità.

12. Monitoraggio SQL Server in ambienti cloud

12.1 Monitoraggio del database SQL di Azure

Il database SQL di Azure offre funzionalità di monitoraggio integrate che differiscono da quelle locali SQL Server.

Integrazione di Azure Monitor

Azure Monitor raccoglie automaticamente le metriche dal database SQL di Azure, tra cui:

  • Utilizzo DTU o vCore
  • Utilizzo dello storage
  • Statistiche di connessione
  • Stalli e timeout

È possibile accedere a queste metriche tramite il portale di Azure o l'API di Azure Monitor.

Funzionalità di monitoraggio integrate

Il database SQL di Azure include:

  • Raccomandazioni di sintonizzazione automatica
  • Informazioni sulle prestazioni delle query
  • Informazioni intelligenti per il rilevamento delle anomalie
  • Sistema di allerta e diagnostica integrato

Informazioni sulle prestazioni delle query

Questa funzionalità fornisce la visualizzazione delle query che consumano più risorse, l'analisi della durata delle query e l'andamento storico delle prestazioni. È possibile accedervi tramite il portale di Azure, nella risorsa del database SQL.

12.2 Strumenti di monitoraggio nativi del cloud

Le piattaforme cloud offrono soluzioni di monitoraggio native ottimizzate per i loro ambienti:

  • Azure Monitor e Application Insights per il database SQL di Azure
  • AWS CloudWatch per RDS SQL Server
  • Monitoraggio di Google Cloud per il cloud SQL Server

Questi strumenti si integrano perfettamente con l'infrastruttura cloud e forniscono un monitoraggio unificato di tutte le risorse cloud.

Monitoraggio dell'ambiente ibrido

Per le distribuzioni ibride che abbracciano sia l'ambiente locale che quello cloud, utilizza strumenti che supportano entrambi gli ambienti, come Redgate SQL Monitor, SolarWinds DPA o soluzioni personalizzate che utilizzano la raccolta centralizzata dei dati.

12.3 Differenze di prestazioni nel cloud

Cloud SQL Server gli ambienti hanno caratteristiche uniche:

Modelli di allocazione delle risorse

I provider cloud utilizzano diversi metodi di allocazione delle risorse (DTU, vCore, serverless) che influiscono sull'interpretazione delle metriche prestazionali. È importante comprendere i limiti e le caratteristiche del proprio livello di servizio.

Considerazioni sulla scalabilità

Gli ambienti cloud offrono funzionalità di scalabilità dinamica. Monitora l'utilizzo delle risorse per determinare quando aumentare o diminuire la scalabilità. Molte piattaforme cloud offrono una scalabilità automatica in base a soglie di prestazioni.

13. Automazione del monitoraggio delle prestazioni

13.1 SQL Server Lavori da agente

Automatizzare la raccolta dati utilizzando SQL Server Lavori dell'agente per un monitoraggio coerente senza intervento manuale.

Raccolta dati pianificata

  1. In SSMS, espandere SQL Server Agente
  2. Fare clic con Offerte di lavoro e seleziona Nuovo lavoro
  3. Assegna un nome al lavoro (ad esempio, "Raccogli metriche sulle prestazioni")
  4. Clicchi Passaggi e aggiungi un nuovo passaggio
  5. Imposta Tipo su Script Transact-SQL
  6. Inserisci il tuo script di raccolta dati
  7. Clicchi Orari e aggiungi un programma
  8. Configura la frequenza (ad esempio, ogni 5 minuti)
  9. Clicchi OK per creare il lavoro

Reporting automatizzato

Crea lavori che generano e inviano via e-mail report sulle prestazioni:

  1. Creare una stored procedure che genera report
  2. Utilizzare Database Mail per inviare report via e-mail
  3. Pianifica l'esecuzione del lavoro su base giornaliera o settimanale

13.2 Automazione di PowerShell

PowerShell fornisce potenti funzionalità di automazione per SQL Server monitoraggio delle prestazioni.

Script di raccolta dei contatori delle prestazioni

$counters = @(
    '\Processor(_Total)\% Processor Time',
    '\Memory\Available MBytes',
    '\PhysicalDisk(_Total)\Avg. Disk sec/Read'
)

$data = Get-Counter -Counter $counters -ComputerName 'SQLServer01'
$data.CounterSamples | Export-Csv 'C:\PerfLogs\counters.csv' -Append

Query WMI

Utilizzare WMI per raccogliere dati sulle prestazioni da server remoti:

$cpu = Get-WmiObject Win32_Processor -ComputerName 'SQLServer01'
$memory = Get-WmiObject Win32_OperatingSystem -ComputerName 'SQLServer01'

Write-Host "CPU Usage: $($cpu.LoadPercentage)%"
Write-Host "Available Memory: $([math]::Round($memory.FreePhysicalMemory/1MB,2)) GB"

Avvisi automatici

Crea script di PowerShell che controllano le metriche e inviano avvisi quando vengono superate le soglie:

$cpuThreshold = 80
$cpu = (Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue

if ($cpu -gt $cpuThreshold) {
    Send-MailMessage -To 'dba@company.com' -Subject 'High CPU Alert' `
        -Body "CPU usage is $cpu%" -SmtpServer 'smtp.company.com'
}

13.3 Creazione di dashboard di monitoraggio

Visualizza i dati sulle prestazioni con dashboard interattive per ottenere informazioni più approfondite.

Integrazione di PowerBI

  1. Collega Power BI alle tabelle dei dati sulle prestazioni
  2. Crea visualizzazioni per metriche chiave
  3. Aggiungere slicer per la selezione dell'intervallo di tempo e del server
  4. Pubblicare dashboard nel servizio Power BI
  5. Configurare le pianificazioni di aggiornamento automatico

Creazione di dashboard in tempo reale

Utilizza strumenti come Grafana o applicazioni web personalizzate per creare dashboard in tempo reale che interrogano direttamente i DMV e i contatori delle prestazioni.

Visualizzazione delle tendenze storiche

Crea grafici lineari che mostrano le tendenze nel tempo per:

  • Utilizzo della CPU
  • Utilizzo della memoria
  • Disk I / O
  • Prestazioni di query
  • Conteggio delle connessioni

14. Casi di studio ed esempi pratici

14.1 Caso di studio: risoluzione della pressione della memoria

Identificazione dei sintomi

Una produzione SQL Server hanno riscontrato tempi di risposta lenti alle query durante le ore di punta. Gli utenti hanno lamentato timeout delle applicazioni e prestazioni ridotte.

Controanalisi

I dati del Performance Monitor hanno rivelato:

  • L'aspettativa di vita della pagina è scesa a 50 secondi (normale: >300)
  • Il rapporto di hit della cache buffer è sceso all'85% (normale: >99%)
  • Le concessioni di memoria in sospeso hanno mostrato spesso valori di 5-10
  • Letture su disco fisico/sec aumentate in modo significativo

Passaggi di risoluzione

  1. Verificato SQL Server impostazione massima della memoria: ho scoperto che era impostata su predefinita (illimitata)
  2. Analisi della memoria totale del server rispetto alla memoria target del server: è emerso un divario significativo
  3. Memoria massima del server configurata per lasciare 8 GB per il sistema operativo
  4. Abilitato il permesso "Blocca pagine in memoria" per SQL Server account di servizio
  5. Aggiunti 32 GB di RAM aggiuntiva al server
  6. Prestazioni monitorate per una settimana: la durata della pagina si è stabilizzata sopra i 500 secondi

Risultato: I tempi di risposta alle query sono migliorati del 60%, i reclami degli utenti sono cessati e le prestazioni dell'applicazione sono tornate alla normalità.

14.2 Caso di studio: ottimizzazione delle prestazioni della CPU

Identificazione dei sintomi

A SQL Server ha mostrato costantemente un utilizzo della CPU superiore al 90% durante l'orario lavorativo, causando prestazioni lente delle applicazioni e frustrazione degli utenti.

Controanalisi

Il monitoraggio delle prestazioni ha rivelato:

  • % Tempo di elaborazione medio del 92% con picchi frequenti fino al 100%
  • Lunghezza della coda del processore costantemente superiore a 4 (il server aveva 8 core)
  • Le compilazioni SQL/sec erano il 25% delle richieste batch/sec (dovrebbero essere <10%)
  • Le ricompilazioni SQL/sec erano il 15% delle richieste batch/sec

Passaggi di risoluzione

  1. Utilizzato DMV per identificare le query che consumano più CPU
  2. Piani di esecuzione analizzati per le query identificate
  3. Sono state rilevate più scansioni di tabelle su tabelle di grandi dimensioni a causa di indici mancanti
  4. Creati indici appropriati in base alle raccomandazioni del piano di esecuzione
  5. Identificato SQL dinamico che causava compilazioni eccessive
  6. Codice applicativo modificato per utilizzare query parametriche
  7. Guida al piano implementata per procedure archiviate problematiche
  8. Statistiche aggiornate sulle tabelle più utilizzate

Risultato: L'utilizzo della CPU è sceso al 45% in media durante l'orario lavorativo. I tempi di esecuzione delle query sono migliorati del 70%. La reattività delle applicazioni è notevolmente migliorata.

14.3 Caso di studio: risoluzione del collo di bottiglia dell'I/O del disco

Identificazione dei sintomi

Gli utenti hanno segnalato una risposta estremamente lenta dell'applicazione durante le operazioni di caricamento dei dati e l'elaborazione batch serale.

Controanalisi

I dati sulle prestazioni hanno mostrato:

  • La durata media di scrittura su disco ha superato i 45 ms sull'unità del registro delle transazioni
  • Lunghezza media della coda del disco pari a 12 sull'unità dei file di dati
  • % Il tempo su disco è rimasto superiore al 95% per ore durante i processi batch
  • Le scritture di pagine/sec erano eccezionalmente alte

Passaggi di risoluzione

  1. Le impostazioni di memoria verificate erano appropriate: non sono stati rilevati problemi di memoria
  2. Configurazione del disco analizzata: rilevati tutti i file sullo stesso set di spindle
  3. Registri delle transazioni separati su unità SSD veloci dedicate
  4. Spostato tempdb su unità SSD separate
  5. Implementati più file di dati tempdb (uno per core)
  6. Unità di file dati aggiornate alla configurazione SSD RAID 10
  7. Lavori batch ottimizzati per utilizzare batch di transazioni più piccoli
  8. Aggiunti indici per ridurre le scansioni di tabella non necessarie durante le operazioni batch

Risultato: La media dei secondi/scritture su disco è scesa a 3 ms. La lunghezza media della coda del disco è stata inferiore a 1. Il tempo di completamento dei processi batch è stato ridotto del 75%.

15. Tendenze future in SQL Server Controllo

15.1 Integrazione di intelligenza artificiale e apprendimento automatico

L'intelligenza artificiale e l'apprendimento automatico stanno trasformando SQL Server monitoraggio delle prestazioni.

Predictive Analytics

I modelli di apprendimento automatico prevedono il fabbisogno futuro di risorse sulla base di dati storici. Questi sistemi possono prevedere:

  • Quando la capacità di archiviazione sarà esaurita
  • Requisiti previsti di CPU e memoria durante i periodi di picco
  • Degrado delle prestazioni delle query prima che abbia un impatto sugli utenti
  • Tempi ottimali per le operazioni di manutenzione

Anomaly Detection

Gli strumenti basati sull'intelligenza artificiale rilevano automaticamente modelli insoliti nelle metriche delle prestazioni. Identificano anomalie che potrebbero sfuggire agli amministratori umani e distinguono tra variazioni normali e problemi reali.

Risanamento automatizzato

I sistemi di auto-riparazione risolvono automaticamente i problemi più comuni quando vengono rilevati:

  • Riavvia i servizi che si sono interrotti
  • Riallocare le risorse durante il carico di picco
  • Applica hotfix per problemi noti
  • Ricostruisci automaticamente gli indici frammentati

15.2 Evoluzione del monitoraggio basato su cloud

Il monitoraggio del cloud continua a evolversi con nuove funzionalità.

Piattaforme di monitoraggio unificate

Le piattaforme moderne forniscono una visibilità unificata su:

  • Locale SQL Server istanze
  • Database ospitati nel cloud
  • Ambienti ibridi
  • le prestazioni delle applicazioni
  • Metriche dell'infrastruttura

Tendenze di osservabilità

Il passaggio dal monitoraggio all'osservabilità sottolinea:

  • Comprensione del comportamento del sistema dagli output
  • Correlazione di metriche, registri e tracce
  • Approfondimenti sui sistemi distribuiti
  • Diagnosi dei problemi in tempo reale

15.3 Sistemi di database auto-riparanti

Futuro SQL Server le versioni includeranno maggiori capacità autonome.

Ottimizzazione automatica

I database si ottimizzeranno costantemente:

  • Creazione ed eliminazione automatica degli indici in base al carico di lavoro
  • Regolazione delle impostazioni di configurazione per prestazioni ottimali
  • Riscrivere le query inefficienti in modo trasparente
  • Gestione dinamica dell'allocazione delle risorse

Sintonizzazione intelligente

I sistemi avanzati impareranno dai modelli di prestazioni e applicheranno automaticamente i consigli di ottimizzazione, riducendo la necessità di intervento manuale da parte dell'amministratore del database.

16. Conclusione e punti chiave

16.1 Riepilogo delle pratiche di monitoraggio essenziali

Efficace SQL Server Il monitoraggio delle prestazioni richiede un approccio completo che combini strumenti, tecniche e best practice.

Riepilogo dei contatori critici

Concentrare gli sforzi di monitoraggio su questi contatori essenziali:

  • Memoria: aspettativa di vita della pagina, rapporto di utilizzo della cache buffer, concessioni di memoria in sospeso
  • CPU: % Tempo processore, Lunghezza coda processore
  • Disco: Media secondi/lettura e scrittura disco, lunghezza coda disco
  • SQL Server: Richieste batch/sec, Compilazioni/sec, Connessioni utente

Riepilogo delle migliori pratiche

  • Stabilire le linee di base durante le normali operazioni
  • Imposta soglie di avviso intelligenti in base alle linee di base
  • Rivedere regolarmente i dati sulle prestazioni
  • Monitoraggio del bilanciamento del sovraccarico con granularità dei dati
  • Conservare i dati a lungo termine per l'analisi delle tendenze
  • Utilizzare strumenti appropriati per ogni scenario di monitoraggio

16.2 Approccio al miglioramento continuo

SQL Server Il monitoraggio delle prestazioni non è un'attività una tantum, ma un processo continuo che richiede un continuo perfezionamento.

Cicli di revisione regolari

  • Giornaliero: controlla gli avvisi e le prestazioni attuali
  • Settimanale: rivedere le tendenze e identificare i problemi emergenti
  • Mensilmente: analizzare i modelli a lungo termine e le esigenze di capacità
  • Trimestrale: aggiornare le linee di base e rivedere l'efficacia del monitoraggio

Rimanere aggiornati con gli strumenti

Mantenere aggiornati gli strumenti e le tecniche di monitoraggio:

  • Valutare le nuove funzionalità di monitoraggio in SQL Server aggiornamenti
  • Testare gli strumenti di terze parti emergenti
  • Partecipare a corsi di formazione e conferenze
  • Partecipare a SQL Server forum della comunità
  • Condividi la conoscenza con i membri del team

16.3 Prossimi passi

Realizzare SQL Server monitorare sistematicamente le prestazioni:

Tabella di marcia per l'implementazione

  1. Settimana 1: Imposta Performance Monitor con contatori essenziali
  2. Settimana 2: Creare set di raccolta dati per la raccolta automatizzata
  3. Settimana 3: Stabilire le linee di base durante le normali operazioni
  4. Settimana 4: Configurare gli avvisi per le soglie critiche
  5. Mese 2: Implementare strumenti di monitoraggio aggiuntivi (DMV, eventi estesi)
  6. Mese 3: Sviluppa dashboard e report personalizzati
  7. In corso: Affinare il monitoraggio in base all'esperienza e ai requisiti mutevoli

Risorse addizionali

Continua a conoscere SQL Server Monitoraggio delle prestazioni tramite la documentazione Microsoft, i blog della community e la pratica. Sperimenta diversi strumenti e tecniche per trovare la soluzione più adatta al tuo ambiente.

17. Domande frequenti (FAQ)

17.1 Quali sono i più importanti SQL Server contatori delle prestazioni da monitorare?

Il più critico SQL Server i contatori delle prestazioni includono:

  • Memoria: aspettativa di vita della pagina (dovrebbe essere >300 secondi) e rapporto di hit della cache buffer (dovrebbe essere >99%)
  • CPU: % Tempo processore (valori sostenuti <75%) e lunghezza coda processore (dovrebbe essere <2 per core)
  • Disco: Media secondi/lettura e scrittura disco (dovrebbe essere <10-20 ms) e lunghezza coda disco (dovrebbe essere <2 per disco)
  • SQL Server: Richieste batch/sec, Compilazioni SQL/sec e Concessioni di memoria in sospeso (dovrebbero essere 0)

Questi contatori forniscono una panoramica completa sullo stato di salute del sistema e aiutano a identificare rapidamente i colli di bottiglia.

17.2 Con quale frequenza dovrei raccogliere i dati sulle prestazioni?

La frequenza della raccolta dipende dagli obiettivi di monitoraggio:

  • Monitoraggio di base: ogni 1 minuto (60 secondi)
  • Risoluzione dei problemi attiva: ogni 15-30 secondi per brevi periodi
  • Tendenze a lungo termine: ogni 5 minuti

Evitare di eseguire continuamente raccolte ad alta frequenza, poiché ciò può influire sulle prestazioni e generare dati eccessivi. Utilizzare intervalli più lunghi per il monitoraggio di routine e intervalli più brevi solo quando si indaga su problemi specifici.

17.3 Qual è la differenza tra Performance Monitor e SQL Server Profilatore?

Monitoraggio delle prestazioni e SQL Server I profiler servono a diversi scopi:

Performance Monitor:

  • Monitora il sistema e SQL Server contatori di prestazioni
  • Tiene traccia dell'utilizzo delle risorse (CPU, memoria, disco)
  • Basso overhead, adatto per il monitoraggio continuo
  • Fornisce metriche aggregate nel tempo

SQL Server profilatore:

  • Tracce individuali SQL Server eventi e query
  • Acquisisce informazioni dettagliate sull'esecuzione delle query
  • Sovraccarico più elevato, non consigliato per uso continuo
  • Ideale per la risoluzione di problemi specifici relativi alle query
  • Obsoleto in favore di Eventi estesi

Utilizzare Performance Monitor per il monitoraggio generale del sistema ed Extended Events (non Profiler) per un'analisi dettagliata a livello di query.

17.4 Impatto del monitor delle prestazioni di Can SQL Server prestazione?

Se configurato correttamente, Performance Monitor ha un impatto minimo su SQL Server prestazioni, in genere con un overhead inferiore al 2%. Tuttavia, un monitoraggio eccessivo può causare problemi:

  • Troppi contatori aumentano le spese generali
  • Intervalli di campionamento molto brevi (inferiori a 15 secondi) mettono a dura prova le risorse
  • La raccolta continua ad alta frequenza genera file di registro di grandi dimensioni

Per ridurre al minimo l'impatto:

  • Monitorare solo i contatori necessari
  • Utilizzare intervalli di campionamento appropriati (60 secondi per il monitoraggio di routine)
  • Memorizzare i registri su unità separate dai file del database
  • Pianificare il monitoraggio ad alta intensità di risorse durante le ore non di punta

17.5 Per quanto tempo dovrei conservare i dati di monitoraggio delle prestazioni?

La conservazione dipende dalle esigenze di analisi e dalla capacità di archiviazione:

  • Minimo: 3 mesi per la risoluzione dei problemi recenti
  • Consigliato: 1-2 anni per la pianificazione della capacità e l'analisi delle tendenze
  • Ottimale: Indefinitamente se lo spazio di archiviazione lo consente, poiché i dati storici diventano più preziosi nel tempo

I dati dei contatori delle prestazioni si comprimono bene e occupano relativamente poco spazio. Si consiglia di archiviare i dati più vecchi in un archivio separato anziché eliminarli. Molte organizzazioni ritengono che anni di dati storici si rivelino preziosi per la pianificazione della capacità e l'identificazione di tendenze a lungo termine.

17.6 Quali sono i valori soglia validi per i contatori di prestazioni chiave?

Valori soglia consigliati per l'avviso:

  • Concessioni di memoria in sospeso: avviso quando > 0
  • Aspettativa di vita della pagina: avviso quando < 300 secondi
  • % Tempo processore: avviso quando > 80% per 5 minuti
  • Lunghezza coda processore: avviso quando > 2 per core
  • Media secondi/lettura o scrittura disco: avviso quando > 20 ms
  • Lunghezza coda disco: avvisa quando > 2 per disco
  • Processi bloccati: avviso quando > 5

Adatta queste soglie in base ai dati di base e alle caratteristiche specifiche del carico di lavoro. Ciò che è normale in un ambiente può indicare problemi in un altro.

17.7 Come faccio a monitorare SQL Server prestazioni da remoto?

Monitor remoto SQL Server istanze che utilizzano questi metodi:

  1. Performance Monitor: Specificare il nome del computer remoto quando si aggiungono contatori
  2. PowerShell: Utilizzare il parametro -ComputerName con Get-Counter
  3. Motorizzazione civile: Connettersi ai server remoti tramite SSMS e interrogare i DMV
  4. Strumenti di terze parti: La maggior parte degli strumenti di monitoraggio supporta il monitoraggio remoto dei server.

Assicurarsi che le regole del firewall consentano il traffico di Performance Monitor e di disporre delle autorizzazioni appropriate sul server remoto. Per più server, valutare l'implementazione di un monitoraggio centralizzato con un server di monitoraggio e un database dedicati.

17.8 Qual è il miglior strumento gratuito per SQL Server monitoraggio delle prestazioni?

Sono disponibili diversi eccellenti strumenti gratuiti per il monitoraggio SQL Server prestazione:

  • Monitoraggio delle prestazioni di Windows: Integrato, completo e affidabile
  • Monitoraggio attività SSMS: Monitoraggio in tempo reale senza installazione aggiuntiva
  • Eventi estesi: Monitoraggio degli eventi leggero integrato SQL Server
  • sp_WhoIsActive: Procedura memorizzata gratuita e popolare per il monitoraggio dettagliato delle attività
  • DBA Dash: Strumento di monitoraggio open source con funzionalità complete
  • SQLWATCH: Open source con capacità di monitoraggio quasi in tempo reale

Per la maggior parte delle organizzazioni, Performance Monitor, in combinazione con gli strumenti SSMS e sp_WhoIsActive, offre eccellenti funzionalità di monitoraggio senza costi aggiuntivi.

17.9 Come posso esportare i dati PerfMon per l'analisi?

Esportare i dati di Performance Monitor utilizzando questi metodi:

Esporta in CSV:

  1. Apri Performance Monitor con il tuo file di registro caricato
  2. Fare clic con il tasto destro del mouse sul grafico e selezionare Salva dati come
  3. Scegli File di testo (delimitato da virgole) (.csv)
  4. Seleziona la posizione e salva
  5. Apri in Excel per l'analisi

Utilizzare il comando Relog:

relog input.blg -f csv -o output.csv

Questa utilità da riga di comando converte i file di registro binari (.blg) in formato CSV per un'analisi più semplice nelle applicazioni di fogli di calcolo.

17.10 Quando dovrei utilizzare strumenti di monitoraggio di terze parti invece delle opzioni integrate?

Prendi in considerazione strumenti di terze parti quando:

  • Gestire un gran numero di SQL Server istanze (10+)
  • Richiede un monitoraggio centralizzato su più data center
  • Necessità di funzionalità avanzate come analisi predittiva o rilevamento delle anomalie
  • Desiderio di un sistema di allerta integrato con i sistemi di gestione degli incidenti
  • Richiedere report di conformità e analisi storiche
  • Mancanza di risorse DBA per creare e gestire soluzioni personalizzate
  • Monitoraggio di ambienti di database eterogenei (SQL Server(Oracle, MySQL, ecc.)

Gli strumenti integrati sono ideali per ambienti più piccoli o quando si dispone di DBA qualificati in grado di sviluppare soluzioni di monitoraggio personalizzate. Gli strumenti di terze parti offrono valore aggiunto grazie al risparmio di tempo, alle funzionalità avanzate e al supporto professionale.

18. Risorse aggiuntive

18.1 Documentazione ufficiale

Microsoft fornisce una documentazione completa per SQL Server monitoraggio delle prestazioni:

18.2 Strumenti e download consigliati

Strumenti essenziali per SQL Server monitoraggio delle prestazioni:

  • Strumento PAL: https://github.com/clinthuffman/PAL
  • sp_WhoIsActive: http://whoisactive.com/
  • DBA Dash: https://dbadash.com/
  • SQLWATCH: https://github.com/marcingminski/sqlwatch
  • Kit di primo soccorso (Brent Ozar): https://www.brentozar.com/first-aid/
  • SQL Server Studio di direzione: https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

18.3 Risorse della comunità

Impara dal SQL Server Comunità:

  • SQL Server Central: https://www.sqlservercentral.com/
  • Blog di Brent Ozar: https://www.brentozar.com/blog/
  • SQL Shack: https://www.sqlshack.com/
  • Suggerimenti MSSQL: https://www.mssqltips.com/
  • Reddit r/SQLServer: https://www.reddit.com/r/SQLServer/
  • Stack Overflow SQL Server etichetta: https://stackoverflow.com/questions/tagged/sql-server

Queste risorse forniscono tutorial, consigli per la risoluzione dei problemi e best practice da parte di esperti SQL Server professionisti. Partecipare ai forum della community ti aiuta a imparare dalle esperienze degli altri e a condividere le tue conoscenze.


L'autore

Yuan Sheng è un amministratore di database senior (DBA) con oltre 10 anni di esperienza in SQL Server ambienti e gestione di database aziendali. Ha risolto con successo centinaia di scenari di ripristino di database in aziende di servizi finanziari, sanitari e manifatturiere.

Yuan è specializzato in SQL Server recupero del database, soluzioni ad alta disponibilitàe ottimizzazione delle prestazioni. La sua vasta esperienza pratica include la gestione di database multi-terabyte, l'implementazione Gruppi di disponibilità sempre attivie sviluppo di strategie automatizzate di backup e ripristino per sistemi aziendali critici.

Grazie alla sua competenza tecnica e al suo approccio pratico, Yuan si concentra sulla creazione di guide complete che aiutano gli amministratori di database e i professionisti IT a risolvere problemi complessi SQL Server sfide in modo efficiente. Si mantiene aggiornato con le ultime SQL Server versioni e le tecnologie di database in continua evoluzione di Microsoft, testando regolarmente gli scenari di ripristino per garantire che le sue raccomandazioni riflettano le migliori pratiche del mondo reale.

Hai domande su SQL Server recupero o hai bisogno di ulteriore assistenza per la risoluzione dei problemi del database? Yuan accoglie feedback e suggerimenti per migliorare queste risorse tecniche.

Condividi ora: