Freitag, Mai 06, 2011

Execution Plan

Eines der besten Kapitel in Christian Antogninis Buch Troubleshooting Oracle Performance ist Nr. 6, das sich mit dem Thema Execution Plans befasst, und dessen gekürzte Fassung auch im Web zu finden ist. Dort findet sich der treffende Satz:
I have always found it surprising how little documentation there is about how to read execution plans, especially since there seem to be so many people who are unable to correctly read them.
Der Fall wird dadurch nicht vereinfacht, dass die Oracle Doku zumindest eine massive Fehlinformation zum Thema enthält, nämlich den Satz: "The execution order in EXPLAIN PLAN output begins with the line that is the furthest indented to the right." Dass das so nicht stimmt, hat Jonathan Lewis schon vor mehreren Jahren erklärt (und auch da scheint die Beobachtung nicht neu gewesen zu sein), und man findet eine interessante (relativ) aktuelle Diskussion zum Thema in Iggy Fernandez' Blog. Tatsächlich ist der erste Ausführungsschritt in der Regel der am weitesten oben befindliche Schritt ohne eigene Kinder (ich hoffe, dass das a) stimmt und b) halbwegs verständlich ist). Überprüfen kann man die Reihenfolge jedenfalls mit Hilfe von SQL_TRACE, wie es Charles Hooper in seinen Kommentaren in Iggy Fernandez' Blog vorgeführt hat.

Nachtrag 09.05.2011: das cbo-Team hat gerade ein White-Paper zum Thema veröffentlicht, das allerdings eher auf die allgemeinen Grundlagen als auf die Details eingeht.

Keine Kommentare:

Kommentar veröffentlichen