sql >> Databasteknik >  >> RDS >> Sqlserver

Felsöka disk I/O-flaskhalsar

Lider din server av ett för stort antal I/O-varningar? Om så är fallet, bör du vara orolig för försämring av serverns prestanda? Hur diagnostiserar man bäst det underliggande problemet och krossar I/O-flaskhalsar?

I/O Stall Time Alarm från Spotlight Cloud är en bra indikator på I/O-flaskhalsar. Den höjs när den genomsnittliga väntetiden per operation av en databasfil överskrider larmtröskeln. Larmet använder data från sys.dm_io_virtual_file_stats DMV:er för sina beräkningar. Den använder ett medelvärde som härletts efter fem samlingar under de senaste 15 minuterna så att du inte blir varnad vid en tillfällig topp. Larmbeskrivningen inkluderar databasens virtuella filnamn, databasnamn och genomsnittlig väntetid per I/O-operation.

Fyra enkla förslag för att diagnostisera I/O-relaterade problem i Spotlight Cloud:

1. Kontrollera vad som bidrar till I/O-förbrukningen.

I/O-förbrukning är ett tecken på latens i diskundersystem som kan orsakas av minnes- eller CPU-tryck, dåligt skrivna frågor eller att de inte har en bra blandning av index. Vid tidpunkten för larmet:

Först, dra fördel av Egenskaper högra panelen på Alarm-sidan för att se Smart Alarms-relaterade data:
1. Detaljer om larmet inklusive filnamn, genomsnittlig I/O-väntetid på filen och larmets varaktighet

2. Analysera de insamlade data som visas i trenddiagrammet under de senaste timmarna



Diagnostisera sedan problemet genom att trycka på Diagnose-knappen. Det leder dig till instrumentpanelen I/O by File fokuserad på den stressade filen. Du kan använda den här och andra instrumentpaneler för att diagnostisera ytterligare:

1. I/O efter fil – Identifiera filerna som direkt påverkas av I/O
2. Workload Analyzer - De bästa SQL-satserna och TSQL-batchen som förbrukar mest I/O
3. Sessioner – Sessioner vid tidpunkten med diskaktivitet
4. Health Check - Granska om det saknas index


2. Kontrollera filer som väntar på I/O-operationer.

Instrumentpanelen I/O by File identifierar filerna som väntar på I/O-operationer. Granska följande I/O-statistik:
1. Notera de I/O-relaterade kolumnerna:I/O-hastigheter, Läs-/skrivhastigheter och Väntehastigheter

2. Sortera filerna efter deras avg wait per /IO genom att trycka på den blå rullgardinsmenyn direkt ovanför kolumnen Logisk fil.

3. Se Läs- och skrivaktiviteten under den senaste timmen som genererats i filen som visas på panelerna till höger.

4. Eventuellt utöka tidsramen för att kontrollera om detta är ett normalt beteende på filen.

5. Om du ser ett antal filer över tiden som lider av samma problem och delar platsen eller disken, överväg att justera deras plats och jämför IO-striden mellan diskar eller platser för att lindra problem med disklatens.


6. Om Tempdb-databasfiler är en framträdande faktor, använd instrumentpanelen för TempDB Usage för att se aktiviteten mot databasen:

a. Tempdb-databasfiler och deras statistik
b. Sessioner med tempdb
c. Topptabeller och index skapade i tempdb



3. Hitta SQL-satser som kan göra stora mängder logisk I/O.

Workload Analyzer-instrumentpanelen visar den översta I/O-konsumerande SQL:

1. Klicka på I/O-resursen i den övre bannern och expandera SQL Statement-noden från dimensionsträdet för att se de 25 främsta SQL-konsumerande I/O under tidsperioden.

2. Fokusera på en sats och expandera panelen SQL-satsegenskaper på höger sida för att se detaljerna i SQL- och frågeplanen.

3. Ladda SQL-satsen i SSMS genom att använda alternativet "Öppna i SSMS" och använd Tuning Pack-pluginverktyget för att analysera planen eller få den att skriva om en mer optimal sats.


4. Fokusera på noden 'SQL Statement' i dimensionsträdet för att lista SQL-satserna. Sortera sessionerna efter IO Wait eller Logical Reads. Använd panelen Jämför med överordnad till höger för att jämföra IO-vänten för en enskild SQL med resten av SQL i den instans som tar upp IO. Den logiska I/O kan resultera i onödiga fysiska I/O.


4. Kontrollera vilka SQL Server-sessioner som genererar höga mängder diskaktivitet.

Sessionsinstrumentpanelen visar sessionerna öppna i instansen. För att se de sessioner som genererar stora mängder diskaktivitet, kontrollera I/O-relaterade statistik och sortera efter dem.
1. I/O-relaterad statistik pekar dig i rätt riktning:Total I/O, Logical Reads, Physical Reads och Request I/O

2. Den högra panelen på fliken Session visar ytterligare statistik tillsammans med den underliggande SQL



Använd Tempdb-panelen för att se sessioner som använder Tempdb-databasen:
1. Använd Tempdb-instrumentpanelen för att identifiera de sessioner och objekt som använder databasen

2. Använd instrumentpanelen för Tempdb Usage för att se alla sessioner under en period


Ta hand om I/O-latensen genom att utnyttja Spotlight Cloud-diagnosfunktionerna!


  1. Hur man får den aktuella tiden i SQLite

  2. MariaDB JSON_TYPE() Förklarad

  3. NUMTODSINTERVAL() Funktion i Oracle

  4. sp_executesql är långsam med parametrar