sql >> Database >  >> RDS >> Sqlserver

Problemen met schijf-I/O-knelpunten oplossen

Heeft uw server last van een buitensporig aantal I/O-waarschuwingen? Als dat zo is, moet u zich dan zorgen maken over verslechtering van de serverprestaties? Hoe het onderliggende probleem het beste te diagnosticeren en I/O-knelpunten weg te werken?

Het I/O Stall Time Alarm van Spotlight Cloud is een goede indicator van I/O-knelpunten. Het wordt verhoogd wanneer de gemiddelde wachttijd per bewerking van een databasebestand de alarmdrempel overschrijdt. Het alarm gebruikt gegevens van sys.dm_io_virtual_file_stats DMV's voor zijn berekeningen. Het gebruikt een gemiddelde waarde die is afgeleid van vijf verzamelingen in de afgelopen 15 minuten, zodat u niet op een incidentele piek wordt gewaarschuwd. De alarmbeschrijving omvat de virtuele bestandsnaam van de database, de databasenaam en de gemiddelde wachttijd per I/O-bewerking.

Vier eenvoudige suggesties om I/O-gerelateerde problemen in Spotlight Cloud te diagnosticeren:

1. Controleer wat bijdraagt ​​aan het I/O-verbruik.

I/O-verbruik is een teken van latentie van schijfsubsystemen die kan worden veroorzaakt door geheugen- of CPU-druk, slecht geschreven query's of het ontbreken van een goede mix van indexen. Op het moment van het alarm:

Maak eerst gebruik van het rechterpaneel Eigenschappen van de pagina Alarmen om Smart Alarms-gerelateerde gegevens te bekijken:
1. Details van het alarm, inclusief de bestandsnaam, gemiddelde I/O-wachttijd op het bestand en duur van het alarm

2. Analyseer de verzamelde gegevens die zijn weergegeven in de trendgrafiek van de afgelopen paar uur



Stel vervolgens een diagnose van het probleem door op de knop Diagnose te drukken. Dat leidt u naar het I/O by File-dashboard dat is gericht op het gestresste bestand. U kunt dit en andere dashboards gebruiken om verder te diagnosticeren:

1. I/O per bestand – Identificeer de bestanden die rechtstreeks worden beïnvloed door I/O
2. Workload Analyzer - De belangrijkste SQL-statements en TSQL-batch die de meeste I/O verbruiken
3. Sessies – Sessies op het moment met schijfactiviteit
4. Health Check - Controleer of er indexen ontbreken


2. Controleer bestanden die wachten op I/O-bewerkingen.

Het I/O by File-dashboard identificeert de bestanden die wachten op I/O-bewerkingen. Bekijk de volgende I/O-statistieken:
1. Noteer de I/O-gerelateerde kolommen:I/O-snelheden, Lees-/schrijfsnelheden en Wachtsnelheden

2. Sorteer de bestanden op hun gemiddelde wachttijd per /IO door op de blauwe vervolgkeuzelijst direct boven de kolom Logisch bestand te drukken.

3. Bekijk de lees- en schrijfactiviteit van het afgelopen uur die is gegenereerd in het bestand dat wordt weergegeven op de panelen aan de rechterkant.

4. Breid desgewenst het tijdsbestek uit om te controleren of dit normaal is voor het bestand.

5. Als u in de loop van de tijd ziet dat een aantal bestanden hetzelfde probleem heeft en de locatie of schijf deelt, kunt u overwegen hun locatie aan te passen en de IO-conflicten tussen schijven of locaties te vergelijken om de schijflatentieproblemen te verminderen.


6. Als Tempdb-databasebestanden een prominente factor zijn, gebruikt u het TempDB-gebruiksdashboard om de activiteit tegen de database te bekijken:

a. Tempdb-databasebestanden en hun statistieken
b. Sessies die gebruik maken van tempdb
c. Toptabellen en indexen gemaakt in tempdb



3. Vind SQL-instructies die mogelijk grote hoeveelheden logische I/O uitvoeren.

Het Workload Analyzer-dashboard toont de meest I/O-verbruikende SQL:

1. Klik op de I/O-resource in de bovenste banner en vouw het SQL-instructieknooppunt uit de dimensiestructuur uit om de top 25 SQL-verbruikende I/O gedurende de tijdsperiode te bekijken.

2. Concentreer u op één instructie en vouw het venster Eigenschappen van SQL-instructie aan de rechterkant uit om de details van het SQL- en queryplan te bekijken.

3. Laad de SQL-instructie in SSMS met behulp van de optie 'Openen in SSMS' en gebruik de Tuning Pack-plug-intool om het plan te analyseren of een meer optimale instructie te laten herschrijven.


4. Focus op het knooppunt 'SQL-instructie' van de dimensiestructuur om de SQL-instructies weer te geven. Sorteer de sessies op IO Wait of Logical Reads. Gebruik het deelvenster Vergelijken met ouder aan de rechterkant om de IO-wachttijd van een enkele SQL te vergelijken met de rest van SQL in de instantie die IO in beslag neemt. De logische I/O kan resulteren in onnodige fysieke I/O.


4. Controleer welke SQL Server-sessies grote hoeveelheden schijfactiviteit genereren.

Op het dashboard Sessies worden de sessies weergegeven die in de instantie zijn geopend. Om de sessies te zien die grote hoeveelheden schijfactiviteit genereren, controleert u de I/O-gerelateerde statistieken en sorteert u daarop.
1. I/O-gerelateerde statistieken wijzen u in de goede richting:totale I/O, logische leesbewerkingen, fysieke leesbewerkingen en aanvraag-I/O

2. Het rechterpaneel van het tabblad Sessie toont aanvullende statistieken samen met de onderliggende SQL



Gebruik het Tempdb-paneel om sessies te bekijken die gebruikmaken van de Tempdb-database:
1. Gebruik het Tempdb-dashboard om de sessies en objecten te identificeren die de database gebruiken

2. Gebruik het Tempdb-gebruiksdashboard om alle sessies over een periode te zien


Beheers de I/O-latentie door gebruik te maken van de diagnostische mogelijkheden van Spotlight Cloud!


  1. Tabellen weergeven in MySQL en MariaDB

  2. Verschil in het omgaan met de spaties tussen Oracle en SQL Server

  3. Een lege database maken in Access 2016

  4. DB-besturing nadert zijn dood