Frage

Was zeigt es eine Abfrage, um zu sehen, die ein niedrig Kosten im erklären Plan hat aber ein hohes konsistent wird in Autotrace zählen? In diesem Fall waren die Kosten in der 100 ist und die CRs waren in die Millionen.

War es hilfreich?

Lösung

Die Kosten für zwei verschiedene Dinge je nach Ausführung darstellen können und ob Sie in CPU-basierten Kalkulationsmodus ist oder nicht ausgeführt werden.

Kurz gesagt, stellen die Kosten so viel Zeit, dass der Optimierer die Abfrage auszuführen erwartet, aber es wird in Einheiten von der Höhe der Zeit, dass eine einzelne Block Lese nimmt ausgedrückt. Zum Beispiel, wenn Oracle erwartet ein einziger Block zu nehmen 1ms und die Abfrage lesen 20ms zu nehmen, dann die Kosten für 20 entspricht.

In Übereinstimmung bekommt genau nicht übereinstimmen mit diesem für eine Reihe von Gründen: die Kosten beinhaltet nicht konsistent (Strom) wird (zB das Lesen und Schreiben temporäre Daten), die Kosten umfasst CPU-Zeit, und eine konsistente bekommen kann ein Multiblock sein lesen anstelle eines einzigen Block gelesen und somit eine unterschiedliche Dauer haben. Oracle kann auch die Schätzung der Kosten völlig falsch, und es könnte viel mehr oder weniger konsistent bekommt am Ende erfordern als die Schätzung vorgeschlagen.

Eine nützliche Methode, die helo trennt zwischen dem vorhergesagten Ausführungsplan und den tatsächlichen Leistung erklären kann, ist „Kardinalität Feedback“. Sehen Sie diese Präsentation: http://www.centrexcc.com/Tuning% 20by% 20Cardinality% 20Feedback.ppt.pdf

Andere Tipps

Am besten sind die Kosten der Schätzung des Optimierers der Anzahl der I / O, dass eine Abfrage durchführen würde. Also, im besten Fall, die Kosten nur wahrscheinlich sind, genau zu sein, wenn der Optimierer einen sehr guten plan-- wenn die Optimierungs Schätzung der Kosten richtig gefunden hat, ist und der Plan ist ideal, dass in der Regel bedeutet, dass Sie nie die Mühe gehen auf dem Plan suchen, weil diese Abfrage recht gut ausführen wird.

In Übereinstimmung wird jedoch ein tatsächliches Maß für die Anzahl von bekommt, dass eine Abfrage tatsächlich ausgeführt. Das ist also eine viel genauere Benchmark zu verwenden.

Zwar gibt es viele, viele Dinge, die die Kosten beeinflussen können, und ein paar Dinge, die die Anzahl von konsistenten bekommt beeinflussen können, ist es wahrscheinlich vernünftig zu erwarten, dass, wenn Sie ein sehr niedrig Kosten und eine sehr hohe Anzahl von konsistenten bekommt, dass der Optimierer mit schlechten Schätzungen der Mächtigkeit der verschiedenen Stufen (die ROWS-Spalte in der PLAN_TABLE sagt Ihnen, die erwartete Anzahl der Zeilen in jedem Schritt zurück) funktioniert wahrscheinlich. Das kann bedeuten, dass Sie fehlende oder veraltete Statistiken haben, dass Sie einige Histogramme fehlen, dass Ihre Initialisierungsparameter oder Systemstatistiken in irgendeiner Weise falsch sind, oder dass die CBO hat Probleme aus einem anderen Grund die Mächtigkeit der Ergebnisse abzuschätzen.

Welche Version von Oracle sind Sie mit?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top