Definition
Der Prozess in einem Datenbankmanagementsystem, einen Ausführungsplan für eine deklarative Abfrage auszuwählen, indem äquivalente algebraische Ausdrücke transformiert, Kosten geschätzt und Operatoren, Join-Reihenfolgen und Zugriffswege gewählt werden, die den erwarteten Ressourcenverbrauch oder die Latenz minimieren.
Prinzip
Prinzip
Durchsuche den Raum semantisch äquivalenter Abfragepläne mit Kostenmodellen und Statistiken, wende algebraische Transformationen (Kommutativität, Assoziativität, Predicate Pushdown, Projektion) und Heuristiken an, um unter Nebenbedingungen kostengünstige Pläne zu finden.
Demonstration
Demonstration
Der Optimierer schreibt eine SQL-Abfrage um, um Filter vor Joins zu schieben, wählt basierend auf Kardinalitätsschätzungen einen Indexscan statt eines Full Scans und ordnet Joins so, dass kleinere Zwischenresultate materialisiert werden, wodurch I/O und Ausführungszeit sinken.
Fehlanwendung
Fehlanwendung
Das Vertrauen auf veraltete oder fehlende Statistiken führt zu schlechten Kardinalitätsschätzungen und schlechten Plänen; exhaustive Suche ohne Pruning ist unpraktikabel; vorzeitige Materialisierung oder übermäßiges Heuristik-Design kann bessere Pläne übersehen.
Konsequenz
Konsequenz
Effektive Abfrageoptimierung reduziert Abfragelatenz und Ressourceneinsatz erheblich und ermöglicht es komplexen Analyse- und OLTP-Workloads, skaliert mit vorhersagbarer Leistung auszuführen.
Umkehrung
Umkehrung
Ohne Optimierung kann das DBMS einen naiven Plan (Full Scans, verschachtelte Schleifenjoins bei großen Eingaben) ausführen, der übermäßiges I/O und CPU verbraucht und deutlich höhere Latenz erzeugt.
Abgrenzung
Abgrenzung
Gilt für deklarative Abfragen in DBMS und Query-Engines; schließt manuelles Umschreiben von Abfragen außerhalb des Optimierers und Laufzeitplanungen aus, die nichts mit Einzelabfrage-Planwahl zu tun haben.
Semantische Spannung
Semantische Spannung
Es besteht eine Spannung zwischen regelbasierten und kostenbasierten Optimierern sowie zwischen exhaustiver Suche und heuristischem Pruning; zudem gibt es einen Trade-off zwischen Optimierungszeit und Laufzeitperformance.
Synthese
Synthese
Abfrageoptimierung ist der kostengeleitete Such– und Transformationsprozess, der eine deklarative Abfrage in einen effizienten Ausführungsplan überführt, durch Kombination algebraischer Umformulierungen, statistikbasierter Kostenmodelle und pragmatischer Heuristiken.