Antworten:
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.
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.
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/ ]
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.
Ü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.
So fügen Sie der Liste hinzu:
Suchen Sie im Fehlerprotokoll nach:
Ü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.
Isolieren Sie das Problem
sp_lockoder sys.dm_tran_locks)Auf einen gespeicherten Prozess oder eine gespeicherte Ansicht isoliert haben
@tablessollte#tablesscansdafürseeksSET STATISTICS IO ONusw.), um die Basisleistungszahlen abzurufenEs 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.