SQL Server-Leistungsanalyse? [geschlossen]

7

Was tun Sie zuerst, wenn Sie einen Anruf / eine Seite zu einem SQL Server-Leistungsproblem erhalten?

Eine Spur starten? Pop-up Perfmon? Aktivitätsmonitor öffnen?

Jedes dieser Tools ist nützlich, aber wie lautet Ihre "Abfolge" der Fehlerbehebung?

BradC
quelle

Antworten:

4

Hängt davon ab.

Ist dies ein plötzliches, aus heiterem Himmel auftretendes Problem, oder handelt es sich langfristig um eine allgemein schlechte Leistung?

Wenn es das erstere ist, beginne ich mit den ausführungsbezogenen DMVs (sys.dm_exec_requests). Gibt es eine Blockierung? Gibt es eine Abfrage, die zu lange läuft oder massive Ressourcen verbraucht? Grundsätzlich werde ich nach etwas Abnormalem suchen (beachten Sie, um das sehen zu können, muss ich wissen, was normal ist)

Wenn es das letztere ist, werde ich die Methode verwenden, über die ich in diesen Artikeln geschrieben habe.

http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-1/

http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-2/

GilaMonster
quelle
3

Erste Sache? Sprechen Sie mit dem Benutzer.

Was hat sich geändert?

Ist diese schlechte Leistung eine neue Sache, ist sie plötzlich aufgetaucht oder hat sie sich nur aufgebaut?

Was zeigen Ihre historischen Berichte (SQLH2) im letzten Monat?

Überprüfen Sie den Server auf Speicherplatz, RAM-Nutzung und CPU-Auslastung (in dieser Reihenfolge). War der Server überhaupt richtig eingerichtet (RAM-Einstellungen) - taskmgr.

Überprüfen Sie die Leistung selbst. Kommt es dir langsam vor?

Hat sich der Benutzer daran gewöhnt, die Leistung eines neuen Systems sofort zu nutzen (keine Daten), und jetzt beginnt es zu ziehen?

... Dann können Sie mögliche Probleme untersuchen. Sie müssen zuerst einen Benchmark erstellen, sonst wissen Sie nie, wann Sie fertig sind.

Kerl
quelle
Es lohnt sich auch zu überprüfen, ob Ihr RAID 5 einen Fehler aufweist. Sie können einen Leistungseinbruch erzielen, wenn Ihr RAID-Array eine Festplatte verliert und eine Neuerstellung durchgeführt wird oder der batteriegepufferte Schreibcache blinkt.
Guy
2

Bevor ich überhaupt alle oben genannten Vorschläge mache, würde ich Folgendes tun:

SELECT 

        @@total_read AS 'Total Read', 
        @@total_write AS 'Total Write', 
        @@total_errors AS 'Total Error',
        @@io_busy AS 'IO Processing Time (ms)',
        @@cpu_busy AS 'CPU Processing Time (ms)',
        @@idle AS 'Idle Time (ms)'

[Ich verweise auf meinen Blog-Beitrag: http://dbalink.wordpress.com/2009/04/28/monitoring-sql-server-performance-quickie-edition/ ]

MarlonRibunal
quelle
Sieht sehr interessant aus, obwohl Ihr Blog-Beitrag nicht sagt, was diese Zahlen darstellen (Sind sie Zahlen pro Sekunde? Oder kumulative Werte? Seit wann akkumulierte Werte? Woher weiß ich, was gut oder schlecht ist?) Ich muss mich nur in Bücher vertiefen online, um zu sehen, was diese Zahlen darstellen.
BradC
2

Verwenden Sie SQLIO . Sie können eine ganze Reihe von Informationen darüber lesen, welche Schalter / Beschwörungsformeln verwendet werden sollen. Wenn Sie sie jedoch nur auf den Laufwerken ausführen, auf denen Ihre MDF / LDFs gespeichert sind (z. B. sqlio.exe / dCDE), erhalten Sie eine hervorragende Überschrift "MBs / Sek." für Vergleiche. Ich habe die schlechte Leistung unserer App am Standort eines Kunden bis hin zu Festplatten- / LUN-Konflikten auf einem Hitachi AMS (Fibre Channel Disk System) aufgespürt. Mein Laptop lief 10x besser! Sobald unsere Datenbank eine eigene LUN bekam, war unsere App wieder glücklich.

Duncan Smart
quelle
1

Überprüfen Sie die Protokolldateien, insbesondere die Protokollierung für lange Abfragen. Wenn es nicht eingeschaltet ist, schalten Sie es ein.

Überprüfen Sie den allgemeinen Zustand des Computers - es kann sich nicht um den SQL Server handeln, es kann sich um den gesamten Computer handeln - überprüfen Sie, ob außer Kontrolle geratene Prozesse, die gesamte CPU-Auslastung und die gesamte Speichernutzung vorliegen - Sie zeichnen diese Dinge mit Kakteen oder Ähnlichem für historische Vergleiche auf, oder? Überprüfen Sie also die Grafiken und sehen Sie, wann das, was langsam ist, langsam wird.

pjz
quelle
re: lange Abfrage - auf welche Protokollierung beziehen Sie sich? Eine Spur? Oder gibt es eine Spurenflagge?
Sam
1

So fügen Sie der Liste hinzu:

Suchen Sie im Fehlerprotokoll nach:

  • Hinweise auf Korruption (823s, 824s, 825s)
  • Hinweise auf Probleme mit der E / A-Leistung (E / A dauern länger als X-Fehler)
  • Probleme mit Latch-Konflikten im Tempdb
  • Der SQL Server-Arbeitssatz wird auf einer 64-Bit-Box ausgelagert

Überprüfen Sie die Indexfragmentierung. Überprüfen Sie, ob das automatische Wachstum richtig eingestellt und die sofortige Initialisierung aktiviert ist. Stellen Sie sicher, dass die automatische Verkleinerung nicht aktiviert ist.

Viele Informationen zu all diesen Themen in meinem Blog - können Links posten, wenn Sie möchten.

Paul Randal
quelle
1

Isolieren Sie das Problem

  1. Überprüfen Sie, ob das Netzwerk in Ordnung ist
  2. Überprüfen Sie, ob der Server nicht gehämmert wird
  3. Überprüfen Sie das Ereignisprotokoll
  4. Suchen Sie nach gesperrten SQL Server-Ressourcen ( sp_lockoder sys.dm_tran_locks)

Auf einen gespeicherten Prozess oder eine gespeicherte Ansicht isoliert haben

  1. Überprüfen Sie, ob offensichtliche Probleme im Code zB @tablessollte#tables
  2. Überprüfen Sie den Ausführungsplan scansdafürseeks
  3. Isolieren Sie die SQL, die am langsamsten ausgeführt wird
  4. Aktivieren Sie die E / A- und CPU-Statistiken ( SET STATISTICS IO ONusw.), um die Basisleistungszahlen abzurufen
  5. Frig herum mit dem SQL, Indizes usw.
  6. Messen Sie die E / A- und CPU-Leistung erneut
  7. Wenn nicht ausreichend verbessert, gehe zu 5, sonst gehe zum Pub
Ed Guiness
quelle
0

Es hängt vom Problem ab, aber das erste, was ich normalerweise mache, ist, den Code zu überprüfen, um festzustellen, ob er die Ursache für Ineffizienz ist. Normalerweise überprüfe ich dann die betroffenen Tabellen und stelle sicher, dass sie alle geeigneten Indizes usw. haben.

kemiller2002
quelle