SQL Performance Checkliste

SQL Performance Checkliste

Eine Checkliste, die Ihnen hilft, eine SQL-Abfrage zu untersuchen und deren Leistung zu verbessern…

Wie man Sie verwendet:

Gehen Sie jede Checkliste durch und antworten Sie auf Ja, Nein oder Weiß nicht.

Nutzen Sie die Antworten, um weitere Schritte oder Verbesserungsbereiche zu bestimmen.

Abschnitt 1: Abfragekontext und Erwartungen

  • Gibt es eine klare Ziellaufzeit für diese Abfrage, auf die sich die Stakeholder einig sind?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Ist die Abfrage im Vergleich zu ihrer historischen Leistung langsam, nicht nur "fühlt sich langsam an"? ☐ Ja ☐ Nein ☐ Weiß nicht
  • Läuft die Abfrage häufig genug, sodass sich kleine Verzögerungen summieren?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Ist die Langsamkeit für Nutzer oder für nachgelagerte Systeme sichtbar?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Wird die Abfrage als Teil eines wichtigen Workflows ausgeführt?
    ☐ Ja ☐ Nein ☐ Weiß nicht

Abschnitt 2: Datenmerkmale

  • Ist das zugrunde liegende Datenvolumen seit der Abfrage signifikant gewachsen?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Sind eine kleine Anzahl von Werten für einen großen Teil der Zeilen verantwortlich?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Arbeitet die Abfrage auf Tabellen, die kontinuierlich wachsen? ☐ Ja ☐ Nein ☐ Weiß nicht
  • Ist die Abfrage sensitiv gegenüber Datumsbereichen oder gleitenden Fenstern?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Variiert die Leistung je nachdem, welche Werte abgefragt werden? ☐ Ja ☐ Nein ☐ Weiß nicht

Abschnitt 3: Abfrageform & Logik

  • Fügt die Abfrage mehrere große Tabellen zusammen? ☐ Ja ☐ Nein ☐ Weiß nicht
  • Enthält die Abfrage Aggregationen über große Ergebnismengen? ☐ Ja ☐ Nein ☐ Weiß nicht
  • Sind verschachtelte Abfragen oder abgeleitete Ergebnissets beteiligt?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Liefert die Abfrage mehr Spalten, als tatsächlich benötigt werden? ☐ Ja ☐ Nein ☐ Weiß nicht
  • Wird die Abfrage an mehreren Orten mit unterschiedlichen Eingaben wiederverwendet? ☐ Ja ☐ Nein ☐ Weiß nicht

Abschnitt 4: Signale des Ausführungsplans

  • Ist ein Schritt für den Großteil der gesamten Ausführungskosten verantwortlich?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Unterscheiden sich die geschätzten Zeilenzahlen signifikant von den tatsächlichen Zeilen?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Zeigt der Plan, dass die Arbeit über viele Reihen hinweg wiederholt wird?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Werden große Datensätze früher verarbeitet als erwartet? ☐ Ja ☐ Nein ☐ Weiß nicht
  • Ändert sich der Ausführungsplan je nach Eingabewerten? ☐ Ja ☐ Nein ☐ Weiß nicht
  • Enthält der Ausführungsplan Warnungen oder markierte (auffällige/problematische) Operatoren? ☐ Ja ☐ Nein ☐ Weiß nicht

    Abschnitt 5: Signale für Index- und Zugangspfade

  • Wird im Vergleich zu den zurückgegebenen Zeilen eine große Menge an Daten gelesen?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Zeigt der Plan den vollständigen Datenzugriff an, wo gezielter Zugriff erwartet wurde?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Findet das Filtern nach dem Lesen der Daten statt während des Zugriffs statt?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Werden mehrere Zugriffspfade kombiniert, um die Abfrage zu erfüllen?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Verschlechtert sich die Performance, wenn die Daten wachsen?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Verwendet dieselbe Abfrage zu unterschiedlichen Zeiten unterschiedliche Zugriffspfade?
    ☐ Ja ☐ Nein ☐ Weiß nicht

Abschnitt 6: Umgebung & Nutzung

  • Verhält sich die Abfrage in der Produktion anders als bei Test oder Entwicklung?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Wird die Abfrage gleichzeitig von vielen Benutzern oder Prozessen ausgeführt?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Wird die Abfrage interaktiv ausgeführt und auch von Hintergrundjobs?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Variiert die Leistung je nach Tageszeit oder Systemlast?
    ☐ Ja ☐ Nein ☐ Weiß nicht
  • Ist die Abfrage empfindlich gegenüber Parameterwerten oder Benutzereingaben?
    ☐ Ja ☐ Nein ☐ Weiß nicht

 

Dieser Beitrag wurde unter ORACLE, POSTGRES veröffentlicht. Setze ein Lesezeichen auf den Permalink.