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

Fejlfinding af disk I/O-flaskehalse

Lider din server af et for stort antal I/O-alarmer? Hvis ja, bør du så være bekymret for forringelse af serverens ydeevne? Hvordan diagnosticeres det underliggende problem bedst og smadre I/O-flaskehalse?

Spotlight Clouds I/O Stall Time Alarm er en god indikator for I/O-flaskehalse. Den hæves, når den gennemsnitlige ventetid pr. operation af en databasefil overstiger alarmtærsklen. Alarmen bruger data fra sys.dm_io_virtual_file_stats DMV'er til sine beregninger. Den bruger en gennemsnitsværdi udledt efter fem samlinger i løbet af de sidste 15 minutter, så du ikke bliver advaret ved en lejlighedsvis stigning. Alarmbeskrivelsen inkluderer databasens virtuelle filnavn, databasenavn og den gennemsnitlige ventetid pr. I/O-operation.

Fire nemme forslag til at diagnosticere I/O-relaterede problemer i Spotlight Cloud:

1. Tjek, hvad der bidrager til I/O-forbrug.

I/O-forbrug er et tegn på diskens undersystemers latenstid, der kan være forårsaget af hukommelses- eller CPU-tryk, dårligt skrevne forespørgsler eller ikke har en god blanding af indekser. På tidspunktet for alarmen:

Udnyt først Egenskaber i højre side af siden Alarmer for at se Smart Alarms-relaterede data:
1. Detaljer om alarmen inklusive filnavnet, gennemsnitlig I/O-ventetid på filen og alarmens varighed

2. Analyser de indsamlede data grafisk på trenddiagrammet spændt over de sidste par timer



Derefter skal du diagnosticere problemet ved at trykke på Diagnose-knappen. Det vil føre dig til I/O by File-dashboardet med fokus på den stressede fil. Du kan bruge dette og andre dashboards til at diagnosticere yderligere:

1. I/O efter fil – Identificer de filer, der er direkte påvirket af I/O
2. Workload Analyzer - De bedste SQL-sætninger og TSQL-batch, der bruger mest I/O
3. Sessioner – Sessioner på tidspunktet med diskaktivitet
4. Sundhedstjek - Gennemgå om der mangler indekser


2. Tjek filer, der venter på I/O-operationer.

I/O by File-dashboardet identificerer de filer, der venter på I/O-handlinger. Undersøg følgende I/O-statistikker:
1. Noter de I/O-relaterede kolonner:I/O-rater, læse-/skrivehastigheder og ventehastigheder

2. Sorter filerne efter deres gennemsnitlige ventetid pr. /IO ved at trykke på den blå rulleliste direkte over kolonnen Logisk fil.

3. Se læse- og skriveaktiviteten i den sidste time, der er genereret på filen vist på panelerne til højre.

4. Udvid eventuelt tidsrammen for at kontrollere, om dette er en normal adfærd på filen.

5. Hvis du over tid ser et antal filer, der lider af det samme problem og deler placeringen eller disken, kan du overveje at justere deres placering og sammenligne IO-striden mellem diske eller placeringer for at afhjælpe problemerne med diskforsinkelse.


6. Hvis Tempdb-databasefiler er en fremtrædende faktor, skal du bruge TempDB Usage-dashboardet til at se aktiviteten mod databasen:

en. Tempdb-databasefiler og deres statistik
b. Sessioner, der bruger tempdb
c. Toptabeller og indekser oprettet i tempdb



3. Find SQL-sætninger, der kan udføre store mængder logisk I/O.

Workload Analyzer-dashboardet viser den øverste I/O-forbrugende SQL:

1. Klik på I/O-ressourcen i det øverste banner, og udvid SQL-sætningsknuden fra dimensionstræet for at se de 25 bedste SQL-forbrugende I/O i løbet af tidsperioden.

2. Fokuser på én sætning, og udvid panelet SQL Statement Properties i højre side for at se detaljerne i SQL og forespørgselsplanen.

3. Indlæs SQL-sætningen i SSMS ved at bruge muligheden 'Åbn i SSMS' og brug Tuning Pack-pluginværktøjet til at analysere planen eller få den til at omskrive en mere optimal sætning.


4. Fokuser på 'SQL Statement'-knuden i dimensionstræet for at vise SQL-sætningerne. Sorter sessionerne efter IO Wait eller Logical Reads. Brug panelet Sammenlign med overordnet til højre for at sammenligne IO-venten for en enkelt SQL med resten af ​​SQL i den instans, der optager IO. Den logiske I/O kan resultere i unødvendig fysisk I/O.


4. Tjek hvilke SQL Server-sessioner, der genererer store mængder diskaktivitet.

Sessions-dashboardet viser de sessioner, der er åbne i forekomsten. For at se de sessioner, der genererer store mængder diskaktivitet, skal du tjekke de I/O-relaterede statistikker og sortere efter dem.
1. I/O-relaterede statistikker peger dig i den rigtige retning:Total I/O, Logical Reads, Physical Reads og Request I/O

2. Panelet i højre side af fanen Session viser yderligere statistik sammen med den underliggende SQL



Brug Tempdb-panelet til at se sessioner, der bruger Tempdb-databasen:
1. Brug Tempdb-dashboardet til at identificere de sessioner og objekter, der bruger databasen

2. Brug Tempdb Usage-dashboardet til at se alle sessioner over en periode


Tag ansvaret for I/O-latenstiden ved at udnytte Spotlight Cloud-diagnosefunktionerne!


  1. Venstre Join returnerer ikke alle rækker

  2. Hvad er forskellen mellem Scope_Identity(), Identity(), @@Identity og Ident_Current()?

  3. PostgreSQL 'NOT IN' og underforespørgsel

  4. Hvad skal du kontrollere, hvis PostgreSQL-hukommelsesudnyttelsen er høj