Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Risolvere i colli di bottiglia di I/O su disco

Il tuo server soffre di un numero eccessivo di avvisi di I/O? In tal caso, dovresti essere preoccupato per il degrado delle prestazioni del server? Come diagnosticare al meglio il problema sottostante e distruggere i colli di bottiglia di I/O?

L'allarme tempo di stallo I/O di Spotlight Cloud è un buon indicatore dei colli di bottiglia I/O. Viene generato quando il tempo medio di attesa per operazione di un file di database supera la soglia di allarme. L'allarme utilizza i dati di sys.dm_io_virtual_file_stats DMV per i suoi calcoli. Utilizza un valore medio derivato dopo cinque raccolte negli ultimi 15 minuti, quindi non verrai avvisato di un picco occasionale. La descrizione dell'allarme include il nome del file virtuale del database, il nome del database e il tempo medio di attesa per operazione di I/O.

Quattro semplici suggerimenti per diagnosticare i problemi relativi all'I/O in Spotlight Cloud:

1. Verificare cosa contribuisce al consumo di I/O.

Il consumo di I/O è un segno della latenza dei sottosistemi del disco che potrebbe essere causata dalla pressione della memoria o della CPU, da query scritte male o dalla mancanza di una buona combinazione di indici. Al momento dell'allarme:

Innanzitutto, sfrutta il pannello Proprietà sul lato destro della pagina Allarmi per visualizzare i dati relativi agli allarmi intelligenti:
1. Dettagli dell'allarme, inclusi il nome del file, il tempo medio di attesa I/O sul file e la durata dell'allarme

2. Analizzare i dati raccolti rappresentati graficamente sul grafico di tendenza nell'arco delle ultime ore



Quindi, diagnosticare il problema premendo il pulsante Diagnostica. Questo ti porterà alla dashboard I/O by File focalizzata sul file stressato. Puoi utilizzare questo e altri dashboard per eseguire ulteriori diagnosi:

1. I/O per file:identifica i file direttamente interessati dall'I/O
2. Analizzatore del carico di lavoro:le istruzioni SQL principali e il batch TSQL che consumano più I/O
3. Sessioni – Sessioni al momento con attività del disco
4. Controllo dello stato:verifica se sono presenti indici mancanti


2. Verificare i file in attesa di operazioni di I/O.

Il dashboard I/O per file identifica i file in attesa di operazioni di I/O. Esaminare le seguenti statistiche di I/O:
1. Prendere nota delle colonne relative agli I/O:velocità di I/O, velocità di lettura/scrittura e velocità di attesa

2. Ordinare i file in base alla loro attesa media per /IO premendo sull'elenco a discesa blu direttamente sopra la colonna File logico.

3. Visualizza l'attività di lettura e scrittura nell'ultima ora generata sul file mostrato nei pannelli a destra.

4. Facoltativamente, espandere l'intervallo di tempo per verificare se si tratta di un comportamento normale sul file.

5. Se nel tempo diversi file soffrono dello stesso problema e condividono la posizione o il disco, valutare la possibilità di modificare la loro posizione e confrontare la contesa di I/O tra dischi o posizioni per alleviare i problemi di latenza del disco.


6. Nel caso in cui i file di database Tempdb siano un fattore importante, utilizzare il dashboard Utilizzo TempDB per visualizzare l'attività rispetto al database:

un. File di database Tempdb e relative statistiche
b. Sessioni che utilizzano tempdb
c. Tabelle e indici principali creati in tempdb



3. Trova le istruzioni SQL che potrebbero eseguire grandi quantità di I/O logico.

Il dashboard di Workload Analyzer mostra l'SQL che utilizza principalmente I/O:

1. Fare clic sulla risorsa I/O nell'intestazione in alto ed espandere il nodo Istruzione SQL dall'albero delle dimensioni per visualizzare i 25 principali I/O che consumano SQL durante il periodo di tempo.

2. Concentrarsi su un'istruzione ed espandere il pannello Proprietà istruzione SQL sul lato destro per visualizzare i dettagli dell'SQL e del piano di query.

3. Caricare l'istruzione SQL in SSMS utilizzando l'opzione "Apri in SSMS" e utilizzare lo strumento del plug-in Tuning Pack per analizzare il piano o fare in modo che riscriva un'istruzione più ottimale.


4. Concentrarsi sul nodo "Istruzione SQL" dell'albero delle dimensioni per elencare le istruzioni SQL. Ordina le sessioni per IO Wait o Logical Reads. Utilizzare il pannello Confronta con padre a destra per confrontare l'attesa IO di un singolo SQL con il resto dell'SQL nell'istanza che occupa IO. L'I/O logico può causare I/O fisici non necessari.


4. Verificare quali sessioni di SQL Server generano quantità elevate di attività del disco.

Il dashboard Sessioni mostra le sessioni aperte nell'istanza. Per vedere le sessioni che stanno generando quantità elevate di attività del disco, controlla le statistiche relative all'I/O e ordina in base ad esse.
1. Le statistiche relative agli I/O indicano la giusta direzione:I/O totali, Letture logiche, Letture fisiche e Richieste di I/O

2. Il pannello di destra della scheda Sessione mostra statistiche aggiuntive insieme all'SQL sottostante



Utilizzare il pannello Tempdb per visualizzare le sessioni che utilizzano il database Tempdb:
1. Utilizzare il dashboard Tempdb per identificare le sessioni e gli oggetti che utilizzano il database

2. Utilizzare il dashboard Utilizzo Tempdb per visualizzare tutte le sessioni in un periodo


Prendi il controllo della latenza I/O sfruttando le capacità diagnostiche di Spotlight Cloud!