Auswertungsplan

Auswertungsplan

Bei einem Auswertungsplan (engl.: query evaluation plan (QEP), kurz: query plan), auch Ausführungsplan genannt, handelt es sich um eine Beschreibung, in welchen Einzelschritten ein relationales Datenbankmanagementsystem eine Datenbankabfrage ausführt und in welcher Reihenfolge dies geschieht. Er wird vom Anfrageoptimierer des Datenbankmanagementsystems generiert, wenn eine Datenbankabfrage gestellt wird.

Inhaltsverzeichnis

Anfragebearbeitung

Eine Datenbankabfrage wird mit einer Datenbanksprache wie SQL gestellt. Eine solche ist bei einem relationalen Datenbanksystem deklarativ, das heißt, es wird spezifiziert, was als Ergebnismenge generiert werden soll und nicht, wie der Zugriff auf die Daten im Einzelnen erfolgt. Die Abfrage ist also nicht von der physischen Speicherstruktur der Datenbank abhängig (Datenunabhängigkeit); den physischen Datenzugriff bewerkstelligt das Datenbankmangagementsystem (DBMS). Im Allgemeinen sind zu einer deklarativen Abfrage mehrere Möglichkeiten gegeben, wie der physische Datenzugriff erfolgen kann, von denen das DBMS eine auswählen muss. Verschiedene Strategien beim Datenzugriff unterscheiden sich im Allgemeinen in ihrer Effizienz. Die Komponente „Anfrageoptimierer“ des DBMS ist dafür verantwortlich, die effizienteste Möglichkeit zu identifizieren; sie generiert dafür mehrere mögliche Auswertungspläne – eine Beschreibung, in welchen Einzelschritten und in welcher Reihenfolgen einzelne Operationen ausgeführt werden – und versucht, den effizientesten davon für die Ausführung der Abfrage auszuwählen. Der so ausgewählte Auswertungsplan kann anschließend kompiliert werden oder kann bei interaktiven Anfragen direkt mittels eines Interpreters ausgeführt werden.[1]

Da es dem Anfrageoptimierer im Allgemeinen nicht möglich ist, ohne großen Aufwand den effizientesten der möglichen Auswertungspläne zu identifizieren, arbeitet der Anfrageoptimierer mit Heuristiken bei der Auswahl eines Auswertungsplans. Softwareentwicklern und Datenbankadministratoren obliegt die Aufgabe, beim Auftreten von Performance-Problemen bei der Anfagebearbeitung den vom Anfrageoptimierer gewählten Auswertungsplan zu interpretieren und seine Effizienz zu beurteilen, denn oftmals entscheidet sich der Anfrageoptimierer nicht für die effizienteste Möglichkeit der Anfragebearbeitung oder der Auswertungsplan offenbart das Fehlen von geeigneten Zugriffsstrukturen, deren sich das DBMS beim Datenzugriff bedienen kann. Der Softwareentwickler bzw. der Datenbankadministrator kann dann ggf. dem Anfrageoptimierer neben der zu bearbeitenden Abfrage weitere Informationen liefern, welche die Generierung eines Auswertungsplans beeinflusst, er kann die Abfrage anders formulieren oder die Datenbank um weitere Zugriffsstrukturen, zum Beispiel um einen Datenbankindex, ergänzen.

Beispiel

Sei KUNDEN eine Datenbanktabelle mit der Spalte (Attribut) KUNDENNUMMER, welche als Primärschlüssel fungiert und mittels eines Indexes (KUNDEN_PK) referenziert wird, sowie der Spalte ANZAHL_KAEUFE. Nun werde folgende Anfrage gestellt:

select ANZAHL_KAEUFE+1
from   KUNDEN
where  KUNDENNUMMER = 4

Auf Grundlage dessen könnte der Anfrageoptimierer eines DBMS folgenden Auswertungsplan generieren[2]:

---------------------------------------------------------------------------------
| Id | Operation        | Options        | Object    | Rows | Access Predicates |
---------------------------------------------------------------------------------
| 0  | SELECT STATEMENT |                |           | 1    |                   |
| 1  |   TABLE ACCESS   | BY INDEX ROWID | KUNDEN    | 1    |                   |
| 2  |     INDEX        | UNIQUE SCAN    | KUNDEN_PK | 1    | KUNDENNUMMER = 4  |
---------------------------------------------------------------------------------

Bei diesem Auswertungsplan lässt sich zum Beispiel folgendes ablesen:

  • Die Generierung des Ergebnisses der Abfrage geht durch das Ausführen von drei verschiedenen Operationen (Spalte „Operation“) vonstatten; die Einrückung einer Operation bedeutet, dass diese Operation eine Kindoperation der darüberstehenden Operation ist und dass das Ergebnis dieser Operation der Input für seine Vateroperation ist. Die Operationen im Einzelnen sind:
  • Zuerst wird die Operation mit der Id=2 ausgeführt; diese greift auf den Index KUNDEN_PK zu und liefert die Adresse des gesuchten Datensatzes (die so genannte ROWID) an die Vateroperation mit der Id=1. Bei dieser Operation wird das Prädikat KUNDENNUMMER=4 der Anfrage ausgewertet (Spalte „Access Predicates“)
  • Danach wird die Operation mit der Id=1 ausgeführt. Dabei wird mithilfe der ROWID direkt auf den gesuchten Datensatz der Tabelle KUNDEN zugegriffen; dieser wird nun an die Operation mit der Id=0 geliefert
  • Schließlich greift die Operation mit der Id=0 den Wert der Spalte ANZAHL_KAEUFE aus dem Input-Datensatz ab und bildet die Summe des Werts der Spalte ANZAHL_KAEUFE und der Zahl 1. Die Summe wird als Ergebnis an den Aufrufer der obigen Abfrage zurückgeliefert.
  • Die geschätzte Anzahl an Zeilen, die von der jeweiligen Operation generiert wird, ist jeweils 1 (Spalte „Rows“). Der Anfrageoptimierer sammelt im produktiven Betrieb statistische Informationen, mithilfe derer sich Schätzungen zur Größe von (Zwischen-)Ergebnissen vornehmen lassen.

Ein Auswertungsplan kann noch mehr Informationen als beim obigen Beispiel beinhalten, mit denen sich die Effizienz des Auswertungsplans detailliert analysieren lässt. Es existieren auch Tools, die einen solchen Auswertungsplan statt in einer textuellen in einer grafischen Darstellung generieren können.

Siehe auch

Anmerkungen und Einzelnachweise

  1. Alfons Kemper, André Eickler:: Datenbanksysteme. Oldenbourg Verlag 2004, ISBN 3-486-25706-4, Seite 229
  2. Der vorliegende Teil eines Auswertungsplans wurde vom DBMS der XE-Edition einer Oracle-Datenbank, Version 10.2.0.1.0, erzeugt

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Anfrageoptimierer — Der Anfrageoptimierer ist Teil eines Datenbankmanagementsystems, der versucht, für eine Datenbankanfrage einen optimalen Auswertungsplan zu berechnen. Nicht alle DBMS haben einen Anfrageoptimierer. Das DBMS IMS z. B. braucht keinen… …   Deutsch Wikipedia

  • Datenbankoperator — Ein Datenbankoperator ist Teil einer Datenbankanfrage, der für die Ausführung eines einzelnen Teilschrittes der Anfrage zuständig ist. Für eine Anfrage erstellt eine Datenbank einen Auswertungsplan, dessen Ausführung das angeforderte Ergebnis… …   Deutsch Wikipedia

  • Anwendungsbeobachtung — Als Anwendungsbeobachtung (AWB) bezeichnet man im Bereich der medizinischen Forschung nicht interventionelle Studien, die dazu bestimmt sind, Erkenntnisse bei der Anwendung zugelassener oder registrierter Arzneimittel zu sammeln.… …   Deutsch Wikipedia

  • Ausführungsplan — Als Ausführungsplan werden bezeichnet: ein Teil der Bauplanung, siehe Ausführungsplanung eine Beschreibung, in welchen Einzelschritten ein relationales Datenbankmanagementsystem eine Datenbankabfrage ausführt, siehe Auswertungsplan Diese Seite… …   Deutsch Wikipedia

  • Datenbank — Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen,… …   Deutsch Wikipedia

  • Kardinalität (Datenbanken) — Die Kardinalität einer Menge ist die Anzahl der Elemente in dieser Menge. Im Kontext relationaler Datenbanken wird der Terminus häufig verwendet, da eine Datenbanktabelle auch als eine Menge von Zeilen aufgefasst werden kann. Spalten und Zeilen… …   Deutsch Wikipedia

  • Operatorbaum — Ein Datenbankoperator ist Teil einer Datenbankanfrage, der für die Ausführung eines einzelnen Teilschrittes der Anfrage zuständig ist. Für eine Anfrage erstellt eine Datenbank einen Ausführungsplan, dessen Ausführung das angeforderte Ergebnis… …   Deutsch Wikipedia

  • QEP — Die Abkürzung QEP steht für: Quadrature Encoder Pulse, Englisch für Drehimpulsgeber, siehe Inkrementalgeber Qualified European Photographer, eine Auszeichnung der Federation of European Professional Photographers Qualität und Entwicklung in… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”