SO WIRD'S GEMACHT: Fehlerbehandlung bei langsamen Abfragen auf SQL Server 7.0 oder höher

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 243589
Dieser Artikel wurde zuvor veröffentlicht unter D243589
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
243589 HOW TO: Troubleshoot Slow-Running Queries on SQL Server 7.0 or Later
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie ein Leistungsproblem behandeln, das bei Anwendungen auftreten kann, die mit Microsoft SQL Server arbeiten: die langsame Ausführung einer bestimmten Abfrage oder einer Gruppe von Abfragen. Wenn Sie versuchen, ein Leistungsproblem zu behandeln, das Problem aber nicht auf eine bestimmte Abfrage oder eine kleine Gruppe von Abfragen, die langsamer als erwartet ausgeführt werden, eingegrenzt haben, lesen Sie bitte den folgenden Artikel in der Microsoft Knowledge Base, bevor Sie fortfahren:
224587 INF: Troubleshooting Application Performance with SQL Server
Der weitere Inhalt des vorliegenden Artikels setzt voraus, dass Sie den Umfang des Problems mithilfe des Artikels Q224587 eingegrenzt haben und eine SQL Profiler-Ablaufverfolgung mit den speziellen Ereignissen und Datenspalten, die in Artikel Q224587 beschrieben werden, aufgezeichnet haben.

Das Optimieren von Datenbankabfragen kann eine vielschichtige Aufgabe sein. In den folgenden Abschnitten wird beschrieben, welche Elemente bei der Überprüfung der Abfrageleistung zu untersuchen sind.

Sicherstellen, dass geeignete Indizes vorhanden sind

Eine der ersten Überprüfungen, die bei geringer Abfrageleistung durchgeführt werden sollte, ist die Indexanalyse. Wenn Sie eine einzelne Abfrage untersuchen, können Sie die Option Indexanalyse durchführen in SQL Query Analyzer verwenden. Wenn die SQL Profiler-Ablaufverfolgung eine hohe Arbeitsauslastung anzeigt, können Sie den Indexoptimierungs-Assistenten verwenden. Bei beiden Methoden wird mithilfe des SQL Server-Abfrageoptimierers bestimmt, welche Indizes für die angegebenen Abfragen brauchbar wären. Dies ist eine sehr effiziente Methode, um festzustellen, ob Ihre Datenbank geeignete Indizes enthält.

Informationen zum Verwenden des Indexoptimierungs-Assistenten finden Sie unter dem Thema "Indexoptimierungs-Assistent" in der Onlinedokumentation von SQL Server 7.0.

Wenn Sie Ihre Anwendung von einer früheren Version von SQL Server aktualisiert haben, sind andere Indizes infolge von Änderungen des Optimierers und des Speichermoduls in SQL Server 7.0 möglicherweise effizienter. Mithilfe des Indexoptimierungs-Assistenten können Sie bestimmen, ob eine Änderung der Indizierungsstrategie die Leistung verbessert.

Entfernen aller Abfrage-, Tabellen und Verknüpfungshinweise

Hinweise überschreiben die Abfrageoptimierung und verhindern möglicherweise, dass der Abfrageoptimierer den schnellsten Ausführungsplan wählt. Aufgrund von Änderungen des Optimierers haben Hinweise, die die Leistung in früheren Versionen von SQL Server verbessert haben, möglicherweise keinen positiven Effekt mehr oder können sogar die Leistung in SQL Server 7.0 beeinträchtigen. Zudem können Verknüpfungshinweise aus den folgenden Gründen zu Leistungseinbußen führen:
  • Verknüpfungshinweise verhindern die automatische Parametererstellung und Zwischenspeicherung des Abfrageplans für eine Sofortabfrage.
  • Wenn Sie einen Verknüpfungshinweis verwenden, impliziert dies, dass Sie die Verknüpfungsreihenfolge für alle Tabellen in der Abfrage erzwingen wollen, selbst wenn diese Verknüpfungen nicht ausdrücklich einen Hinweis verwenden.
Wenn die von Ihnen analysierte Abfrage Hinweise enthält, entfernen Sie diese und überprüfen Sie die Leistung erneut.

Untersuchen des Ausführungsplans

Nachdem Sie sichergestellt haben, dass geeignete Indizes vorhanden sind und die Fähigkeit des Optimierers zum Erstellen eines effizienten Plans nicht durch Hinweise beeinträchtigt wird, sollten Sie den Ausführungsplan für die Abfrage untersuchen. Sie können den Ausführungsplan für eine Abfrage auf verschiedene Arten anzeigen:
  • SQL Profiler

    Wenn Sie das Ereignis MISC:Execution Plan in SQL Profiler aufgezeichnet haben, tritt es unmittelbar vor dem Ereignis StmtCompleted für die Abfrage für die spezielle Systemprozess-ID (SPID) auf.
  • SQL Query Analyzer: Grafischer Showplan

    Wählen Sie die Abfrage im Abfragefenster aus und klicken Sie im Menü Abfrage auf Geschätzten Ausführungsplan anzeigen.

    Hinweis: Wenn die gespeicherte Prozedur oder der Stapel temporäre Tabellen erstellt und auf diese verweist, müssen Sie die Anweisung SET STATISTICS PROFILE ON verwenden oder die temporären Tabellen explizit erstellen, bevor Sie den Ausführungsplan anzeigen.
  • SHOWPLAN_ALL und SHOWPLAN_TEXT

    Um eine Textversion des geschätzten Ausführungsplans zu erhalten, können Sie die Optionen SET SHOWPLAN_ALL und SET SHOWPLAN_TEXT verwenden. Weitere Informationen finden Sie unter den Themen "SET SHOWPLAN_ALL (T-SQL)" und "SET SHOWPLAN_TEXT (T-SQL)" in der Onlinedokumentation von SQL Server 7.0.

    Hinweis: Wenn die gespeicherte Prozedur oder der Stapel temporäre Tabellen erstellt und auf diese verweist, müssen Sie die Anweisung SET STATISTICS PROFILE ON verwenden oder die temporären Tabellen explizit erstellen, bevor Sie den Ausführungsplan anzeigen.
  • STATISTICS PROFILE

    Wenn Sie den geschätzten Ausführungsplan entweder grafisch oder mit SHOWPLAN anzeigen, wird die Abfrage nicht tatsächlich ausgeführt. Daher können Sie, wenn Sie temporäre Dateien in einem Stapel oder einer gespeicherten Prozedur erstellen, die geschätzten Ausführungspläne nicht anzeigen, weil die temporären Tabellen nicht existieren. STATISTICS PROFILE führt erst die Abfrage aus und zeigt dann den tatsächlichen Ausführungsplan an. Weitere Informationen finden Sie unter dem Thema "SET STATISTICS PROFILE (T-SQL)" in der Onlinedokumentation von SQL Server 7.0. Bei Ausführung in Query Analyzer erfolgt die Anzeige im grafischen Format auf der Registerkarte Ausführungsplan im Ergebnisbereich.

Untersuchen der Showplan-Ausgabe

Die Showplan-Ausgabe liefert eine Vielzahl von Informationen über den von SQL Server für eine bestimmte Abfrage verwendeten Ausführungsplan. Die detaillierten Informationen und erzeugten Ereignisse werden ausführlich im Kapitel "Übersicht über das Optimieren der Datenbankleistung" der Onlinedokumentation von SQL Server 7.0 beschrieben. Im folgenden werden einige grundlegende Aspekte des Ausführungsplans dargelegt, mit deren Hilfe bestimmt werden kann, ob der beste Plan verwendet wird:
  • Korrekte Indexverwendung

    Die Showplan-Ausgabe zeigt alle an der Abfrage beteiligten Tabellen und den Zugriffspfad zum Abrufen der Tabellendaten an. Verwenden Sie den grafischen Showplan und bewegen Sie den Mauszeiger über die Tabelle, um die Details für jede beteiligte Tabelle anzuzeigen. Wenn ein Index verwendet wird, wird "Indexsuche (Index Seek)" angezeigt, wenn nicht, wird entweder "Tabellenscan" für einen Heap oder "Clustered Index Scan" für eine Tabelle mit einem gruppierten Index angezeigt. Beachten Sie, dass "Suche in gruppiertem Index (Clustered Index Scan)" darauf hinweist, dass die Tabelle über den gruppierten Index durchsucht wird und nicht, dass der gruppierte Index verwendet wird, um direkt auf einzelne Zeilen zuzugreifen.

    Wenn Sie feststellen, dass ein brauchbarer Index vorhanden ist, der nicht für die Abfrage verwendet wird, können Sie versuchen, die Verwendung des Index durch einen Indexhinweis zu erzwingen. Weitere Informationen zu Indexhinweisen finden Sie unter dem Thema "FROM (T-SQL)" in der Onlinedokumentation von SQL Server 7.0.
  • Korrekte Verknüpfungsreihenfolge

    Die Showplan-Ausgabe zeigt an, in welcher Reihenfolge Tabellen, die an einer Abfrage beteiligt sind, verknüpft werden. Bei Nested-Loop-Verknüpfungen ist die obere aufgelistete Tabelle die äußere Tabelle und sollte die kleinere der beiden Tabellen sein. Bei Hash-Verknüpfungen wird die obere Tabelle zur Erstellungseingabe und sollte ebenfalls die kleinere der beiden Tabellen sein. Es ist jedoch zu beachten, dass die Reihenfolge weniger wichtig ist, da der Abfrageprozessor Erstellungs- und Testeingaben zur Laufzeit umkehren kann, wenn er feststellt, dass der Optimierer eine falsche Entscheidung getroffen hat. Sie können anhand der Zeilenzahlschätzungen in der Showplan-Ausgabe bestimmen, welche Tabelle weniger Zeilen zurückgibt.

    Wenn Sie feststellen, dass die Abfrage von einer geänderten Verknüpfungsreihenfolge profitieren könnte, können Sie versuchen, die Verknüpfungsreihenfolge mit einem Verknüpfungshinweis zu erzwingen. Weitere Informationen zu Verknüpfungshinweisen finden Sie unter dem Thema "FROM (T-SQL)" in der Onlinedokumentation von SQL Server 7.0.

    Hinweis: Die Verwendung eines Verknüpfungshinweises in einer umfangreichen Abfrage erzwingt implizit die Verknüpfungsreihenfolge für die anderen Tabellen in der Abfrage, so als ob FORCEPLAN gesetzt wurde.
  • Korrekter Verknüpfungstyp

    SQL Server verwendet Nested-Loop-, Hash- und Merge-Verknüpfungen. Wenn eine langsame Abfrage eine Verknüpfungsmethode einer anderen vorzieht, können Sie versuchen, eine andere Verknüpfungsmethode zu erzwingen. Wenn eine Abfrage beispielsweise eine Hash-Verknüpfung verwendet, können Sie über den LOOP-Verknüpfungshinweis eine Nested-Loop-Verknüpfung erzwingen. Weitere Informationen zu Verknüpfungshinweisen finden Sie unter dem Thema "FROM (T-SQL)" in der Onlinedokumentation von SQL Server 7.0.

    Hinweis: Die Verwendung eines Verknüpfungshinweises in einer umfangreichen Abfrage erzwingt implizit die Verknüpfungsreihenfolge für die anderen Tabellen in der Abfrage, so als ob FORCEPLAN gesetzt wurde.
  • Parallele Ausführung

    Wenn Sie über einen Multiprozessor-Computer verfügen, können Sie auch untersuchen, ob ein paralleler Plan verwendet wird. Wenn dies der Fall ist, wird ein Ereignis Parallelität (Datenströme sammeln / Gather Streams) angezeigt. Wenn eine bestimmte langsame Abfrage einen parallelen Plan verwendet, können Sie versuchen, über den Hinweis OPTION (MAXDOP 1) einen nicht parallelen Plan zu erzwingen. Weitere Informationen finden Sie unter dem Thema "SELECT (T-SQL)" in der Onlinedokumentation von SQL Server 7.0.
Achtung: Da der Abfrageoptimierer gewöhnlich den besten Ausführungsplan für eine Abfrage auswählt, sollten Verknüpfungshinweise, Abfragehinweise und Tabellenhinweise nur als letztes Mittel und nur von erfahrenen Datenbankadministratoren eingesetzt werden.

Informationsquellen

Informationen zum Optimieren von Abfragen finden Sie unter den folgenden Themen in der Onlinedokumentation von SQL Server 7.0:
  • "Optimieren der Anwendungsleistung durch effizienten Datenabruf"
  • "Optimieren von Abfragen"
  • "Empfehlungen für die Abfrageoptimierung"
  • "Tipps zu Transact-SQL"


Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Eigenschaften

Artikel-ID: 243589 - Geändert am: Dienstag, 15. Februar 2011 - Version: 2.3
Keywords: 
kbsqlssis kbhowto kbhowtomaster kbsqlserv2000 kbsqlserv700 KB243589
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com