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 physischen Datenbankentwurf sein.
Eine langsame Ausführung von Abfragen und Aktualisierungen kann mehrere unterschiedliche Ursachen haben:
Kommunikation über ein langsames Netzwerk.
Unzureichender Arbeitsspeicher auf dem Servercomputer oder nicht genügend freier Arbeitsspeicher für SQL Server.
Fehlen hilfreicher Statistiken
Fehlen hilfreicher Indizes
Fehlen hilfreicher indizierter Sichten
Fehlen hilfreichen Datenstripings
Fehlen hilfreicher Partitionierung
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).
Welche Abfrage oder Gruppe von Abfragen ist betroffen, wenn das Leistungsproblem in Zusammenhang mit Abfragen steht?
Verwenden Sie SQL Server Profiler, um die langsame(n) Abfrage(n) zu identifizieren. Weitere Informationen finden Sie unter Verwenden von SQL Server Profiler. Verwenden Sie die dynamischen Verwaltungssichten sys.dm_exec_query_stats und sys.dm_exec_requests, um ähnliche Abfragen zu ermitteln, die zusammen eine große Menge an Systemressourcen beanspruchen. Weitere Informationen finden Sie unter Suchen und Optimieren von ähnlichen Abfragen mit Abfrage und Abfrageplanhashes.
Wie kann die Leistung einer langsam ausgeführten Abfrage analysiert werden?
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?
Der Abfrageoptimierer verwendet Statistiken zum Erstellen von Abfrageplänen, die die Abfrageleistung verbessern. Bei den meisten Abfragen generiert der Abfrageoptimierer automatisch die notwendigen Statistiken für einen hochwertigen Abfrageplan; in einigen Fällen müssen Sie weitere Statistiken erstellen oder den Abfrageentwurf ändern, um optimale Ergebnisse zu erzielen.
Weitere Informationen finden Sie unter Verwenden von Statistiken zum Verbessern der Abfrageleistung. In diesem Thema werden Richtlinien zum Verbessern der Effektivität von Statistiken für die Abfrageleistung beschrieben. Die Richtlinien umfassen:
Verwenden der datenbankweiten Statistikoptionen. Beispielsweise sollten Sie überprüfen, ob die datenbankweite AUTO_CREATE_STATISTICS-Option zum automatischen Erstellen von Statistiken und die datenbankweite AUTO_UPDATE_STATISTICS-Option zum automatischen Aktualisieren von Statistiken aktiviert sind. Wenn sie deaktiviert sind, sind die Abfragepläne möglicherweise nicht optimal, und die Abfrageleistung kann beeinträchtigt sein.
Wann Statistiken erstellt werden sollten. In einigen Fällen können Sie Abfragepläne verbessern, indem Sie zusätzliche Statistiken mit der CREATE STATISTICS (Transact-SQL)-Anweisung erstellen. In diesen zusätzlichen Statistiken können Sie statistische Korrelationen aufzeichnen, die vom Abfrageoptimierer beim Erstellen von Statistiken für Indizes oder einzelne Spalten nicht berücksichtigt werden.
Wann Statistiken aktualisiert werden sollten. In einigen Fällen können Sie den Abfrageplan und damit die Abfrageleistung verbessern, indem Sie Statistiken häufiger aktualisieren, als dies bei aktivierter AUTO_UPDATE_STATISTICS-Anweisung der Fall ist. Sie können Statistiken mit der UPDATE STATISTICS-Anweisung oder der gespeicherten Prozedur sp_updatestats aktualisieren.
Entwerfen von Abfragen, die Statistiken effektiv verwenden. Bestimmte Abfrageimplementierungen, z. B. lokale Variablen und komplexe Ausdrücke im Abfrageprädikat, können zu suboptimalen Abfrageplänen führen. Sie können dies verhindern, indem Sie Abfrageentwurfsrichtlinien für die effektive Verwendung von Statistiken befolgen.
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 Datenbankoptimierungsratgeber (Übersicht). Der Database Engine (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äger 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 physischen Datenbankentwurfs.
Siehe auch