Ich habe mit einem DBA und ein paar Hardware-Leuten über Leistungsprobleme auf unserem SQL Server gestritten. Normalerweise ist alles in Ordnung, aber in den letzten Wochen gab es riesige Verzögerungsspitzen im SQL Server. Es ist klar, dass SQL Server auf Datenträger-E / A wartet. Aber mir wird immer wieder gesagt, dass SQL Server ungewöhnlich hohe E / A fordert. Welches ist nicht der Fall. Ich kann an dem, was läuft, sehen, dass nichts vom Normalen abweicht, und der DBA kümmert sich nur darum, was die Blockierung verursacht und so weiter, was nutzlos ist. Zum Beispiel sehen wir als Hauptsache die Operation auf der ASPState-Datenbank, mit der wir den ASP-Sitzungsstatus auf den Webservern verwalten. Diese Operationen werden normalerweise bei aktiven Ergebnissen von Sp_who2 nicht angezeigt, da sie so schnell ausgeführt werden. Die Datenbank befindet sich im einfachen Wiederherstellungsmodus und die Protokollierung ist strafbar. Während dieser Verzögerungsspitzen können wir jedoch feststellen, dass viele Auswahl- und Aktualisierungsvorgänge in der Datenbank blockiert werden oder warten. Ich bin mir sicher, dass jemand oder ein anderer Job etwas ausführt, das die Festplattennutzung in den RAID-Arrays verursacht, die für die Datenbankprotokolle und Datendateien verwendet werden. Das Problem beweist es, da niemand zugeben will, dass er etwas tut, das unsere Website zerstört.
Meine Frage ist, welche Leistungsindikatoren oder was auch immer ich protokollieren kann, um zu zeigen, dass SQL Server auf E / A wartet, aber nicht, weil es mehr als normal verlangt, sondern weil die Festplatte zu beschäftigt ist, um auf die Anforderungen von SQL Server zu antworten so schnell wie normalerweise?
quelle
Antworten:
Schauen Sie sich folgende Leistungsindikatoren an:
Page lookups/sec
Page reads/sec
Readahead pages/sec
Full Scans/sec
Range Scans/sec
Skipped Ghosted Records/sec
Page IO latch waits
SQL Server, der eine hohe Anzahl von E / A-Anforderungen ausführt, würde mit einer hohen Anzahl von Scans, einer erhöhten Anzahl von Seitensuchen und Seitenlesevorgängen und Wartezeiten bei E / A-Latches für hohe Seiten bestätigt. Es lohnt sich, einen Blick auf
sys.dm_exec_query_stats
Einträge mit hohen physischen Lesezahlen zu werfen . Sie konnten den Täter schnell lokalisieren.Im Allgemeinen ist es der richtige Ansatz, das Problem als Problem bei der Leistungsbehebung zu betrachten, wenn Sie eine Methode wie Waits and Queues verwenden . Sie DBA scheint das Richtige zu tun, also sollten Sie auf ihn hören.
quelle
IO Data Bytes/sec
und prüfen Sie, ob ein anderer Prozess die Festplatte zerstört.Verwenden Sie zunächst Glenn Berrys Diagnoseabfragen und Adam Machanics SP_Whoisactive , um herauszufinden, was wirklich passiert.
Sehen Sie zuerst, welche Datenbankdateien den meisten E / A-Engpass aufweisen, indem Sie diese Abfrage ausführen (Abfrage von Glenn Berry).
Führen Sie dann diese Abfrage aus, um die zehn wichtigsten Ereignisse anzuzeigen, auf die Ihr Server wartet (Abfrage von Jonathan Kehayias ). Sie finden auch ähnliche Abfragen bei Glenn Berry-Diagnoseabfragen.
Sobald Sie diese Informationen zur Hand haben, ist es viel einfacher, das Problem zu beheben.
Übrigens finden Sie hier viele Beiträge zur Verwendung von sp_whoisactive zur Fehlerbehebung .
quelle
"Das Problem beweist es", sagte zu Recht. Schauen Sie sich SQL Server: Minimize Disk I / O an
Es geht darum, DMV zu folgen
Verweise:
quelle