Checkliste für die Analyse langsam ausgeführter Abfragen
Wenn die Ausführung von Abfragen oder Aktualisierungen unerwartet lange dauert, kann dies verschiedene Ursachen haben. Langsam ausgeführte Abfragen können auf Leistungsprobleme zurückgeführt werden, die im Zusammenhang mit dem Netzwerk oder dem Computer, auf dem SQL Server ausgeführt wird, stehen. Eine andere Ursache langsam ausgeführter Abfragen können Probleme mit dem physikalischen Datenbankentwurf sein.
Die häufigsten Gründe für langsam ausgeführte Abfragen und Aktualisierungen sind:
- Kommunikation über ein langsames Netzwerk.
- Unzureichender Arbeitsspeicher auf dem Servercomputer oder nicht genügend Arbeitsspeicher verfügbar für SQL Server.
- Fehlen hilfreicher Statistiken zu indizierten Spalten.
- Veraltete Statistiken zu indizierten Spalten.
- Fehlen hilfreicher Indizes.
- Fehlen hilfreicher indizierter Sichten.
- Fehlendes Datenstriping.
- Fehlen hilfreicher Partitionierung.
Checkliste für die Fehlerbehebung bei langsam ausgeführten Abfragen
Stellen Sie sich folgende Fragen, wenn eine Abfrage oder Aktualisierung länger als erwartet dauert (die Ursachen für langsam ausgeführte Abfragen wurden im vorigen Abschnitt behandelt):
Tipp: |
---|
Gehen Sie, um Zeit zu sparen, erst diese Checkliste durch, bevor Sie sich an den Anbieter für den technischen Support wenden. |
- Ist das Leistungsproblem nicht nur bei Abfragen, sondern auch bei anderen Komponenten zu suchen? Ist das Problem beispielsweise auf geringe Netzwerkleistung zurückzuführen? Verursachen möglicherweise weitere Komponenten den Leistungsabfall oder tragen zu ihm bei?
Der Windows-Systemmonitor kann zur Überwachung der Leistung von SQL Server-Komponenten und SQL Server-fremden Komponenten verwendet werden. Weitere Informationen finden Sie unter Überwachen der Ressourcenverwendung (Systemmonitor). - Wenn das Leistungsproblem im Zusammenhang mit Abfragen steht, welche Abfrage oder Abfragen sind betroffen?
Verwenden Sie SQL Server Profiler, um die langsame(n) Abfrage(n) zu identifizieren. Weitere Informationen finden Sie unter Verwenden von SQL Server Profiler.
Nachdem Sie die langsamen Abfragen identifiziert haben, können Sie die Abfrageleistung weitergehend analysieren, indem Sie einen Showplan erstellen, bei dem es sich um eine Text-, XML- oder grafische Darstellung des vom Abfrageoptimierer generierten Abfrageausführungsplans handelt. Ein Showplan kann mit Transact-SQL SET-Optionen, mit SQL Server Management Studio oder SQL Server Profiler erstellt werden.
Informationen, wie Sie mithilfe von Transact-SQL SET-Optionen Text- und XML-Ausführungspläne anzeigen können, finden Sie unter Anzeigen von Ausführungsplänen mithilfe der Showplan-SET-Optionen (Transact-SQL).
Informationen zum Anzeigen von grafischen Ausführungsplänen mithilfe von SQL Server Management Studio finden Sie unter Anzeigen von grafischen Ausführungsplänen (SQL Server Management Studio).
Informationen zum Anzeigen von Text- und XML-Ausführungsplänen mithilfe von SQL Server Profiler finden Sie unter Anzeigen von Ausführungsplänen mithilfe von SQL Server Profiler-Ereignisklassen.
Mit den von diesen Tools gesammelten Informationen können Sie ermitteln, wie eine Abfrage vom SQL Server-Abfrageoptimierer ausgeführt wird und welche Indizes verwendet werden. Mithilfe dieser Informationen können Sie ermitteln, ob Leistungsverbesserungen durch Neuschreiben der Abfrage, durch Ändern der Tabellenindizes oder eventuell durch Ändern des Datenbankentwurfs erzielt werden können. Weitere Informationen finden Sie unter Analysieren einer Abfrage. - Wurde die Abfrage anhand hilfreicher statistischer Informationen optimiert?
Eine Statistik zur Verteilung von Werten in einer Spalte wird für indizierte Spalten von SQL Server automatisch erstellt. Sie kann für nicht indizierte Spalten auch entweder manuell, mithilfe von SQL Server Management Studio oder der CREATE STATISTICS-Anweisung, oder automatisch erstellt werden, wenn die Datenbankoption AUTO_CREATE_STATISTICS auf TRUE festgelegt ist. Mithilfe dieser Statistik kann der Abfrageprozessor die optimale Strategie für die Bewertung einer Abfrage ermitteln. Wird zusätzlich eine Statistik über nicht indizierte Spalten geführt, die in Verknüpfungsoperationen verwendet werden, so verbessert dies unter Umständen die Abfrageleistung. Weitere Informationen finden Sie unter Indexstatistiken.
Überwachen Sie die Abfrage mithilfe von SQL Server Profiler oder dem grafischen Ausführungsplan in SQL Server Management Studio, um zu ermitteln, ob für die Abfrage genügend statistische Informationen vorliegen. Weitere Informationen finden Sie unter Fehler und Warnungen-Ereigniskategorie (Datenbankmodul). - Ist die Abfragestatistik aktuell? Wird die Statistik automatisch aktualisiert?
SQL Server erstellt und aktualisiert die Abfragestatistik für indizierte Spalten automatisch (solange die automatische Aktualisierung der Abfragestatistik nicht deaktiviert ist). Sie kann für nicht indizierte Spalten zusätzlich auch entweder manuell, mithilfe von SQL Server Management Studio oder der UPDATE STATISTICS-Anweisung, oder automatisch aktualisiert werden, wenn die Datenbankoption AUTO_UPDATE_STATISTICS auf TRUE festgelegt ist. Ob eine Statistik aktuell ist, hängt nicht von der Datums- oder Uhrzeitangabe ab. Wenn keine UPDATE-Operationen stattgefunden haben, ist die Abfragestatistik nach wie vor auf dem neuesten Stand.
Wenn die Statistik nicht für die automatische Aktualisierung festgelegt ist, stellen Sie sie entsprechend ein. Weitere Informationen finden Sie unter Indexstatistiken. - Sind geeignete Indizes verfügbar? Könnte durch Hinzufügen von Indizes möglicherweise die Leistung gesteigert werden? Weitere Informationen finden Sie unter Allgemeine Richtlinien zum Indexentwurf, Auffinden fehlender Indizes und Datenbankmodul-Optimierungsratgeber (Referenz). Der Datenbankmodul-Optimierungsratgeber kann auch die Erstellung notwendiger Statistiken empfehlen.
- Sind Daten- oder Index-Hotspots vorhanden? Erwägen Sie das Verwenden des Datenträgerstripings. Datenträgerstriping kann durch die Verwendung von RAID (Redundant Array of Independent Disks) Ebene 0 implementiert werden, wobei die Daten auf mehrere Datenträgerlaufwerke verteilt werden. Weitere Informationen finden Sie unter Verwenden von Dateien und Dateigruppen und RAID.
- Ist der Abfrageoptimierer mit der besten Möglichkeit ausgestattet, um eine komplexe Abfrage zu optimieren? Weitere Informationen finden Sie unter Empfehlungen für die Abfrageoptimierung.
- Ist bei einem großen Datenumfang eine Partitionierung erforderlich? Die Verwaltbarkeit der Daten ist der Hauptvorteil der Partitionierung. Wenn die Tabellen und Indizes ähnlich indiziert sind, kann eine Partitionierung aber auch zu einer Steigerung der Abfrageleistung führen. Weitere Informationen finden Sie unter Grundlegendes zur Partitionierung und Optimieren des physikalischen Datenbankentwurfs.
Siehe auch
Konzepte
Anzeigen von Ausführungsplänen mithilfe der Showplan-SET-Optionen (Transact-SQL)
Anzeigen von Ausführungsplänen mithilfe von SQL Server Profiler-Ereignisklassen
Showplansicherheit
Showplans erstellende Transact-SQL-Anweisungen