Mittwoch, November 09, 2011

Auto DOP in 11.2

Dieser Tage haben sich Uwe Hesse, Randolf Geist und Gwen Shapira mit dem neuen Auto Degree Of Parallelism (DOP) Feature in 11.2 beschäftigt.

Eine grundlegende Diskussion des Features liefert Frau Shapira in ihrem Blog:
at least in the white papers and presentations it sounds like a very attractive solution. There are two levels to Auto DOP:
  • Limited – when accessing tables and indexes that have been declared with parallel clause, Oracle will decide on the degree of parallelism based on the query and system resources.
  • Auto – Oracle will decide on degree of parallelism for every query. In addition two exciting new features are enabled: parallel statement queuing and in-memory parallel execution.
Der Herr Hesse erläutert die Wirkung des Parameters parallel_degree_policy und die daraus resultierende Wirksamkeit von Hints:
parallel_degree_policy=LIMITED will give you the DOP you request and compute an appropriate DOP only with a parallel degree of DEFAULT as an attribute of the table. Use this parameter if you trust that your applications/designers know why they use a certain DOP. parallel_degree_policy=AUTO will overrule any specific DOP you gave – except the new 11g parallel (n) Hint – and consider to do things in parallel for all tables even without a Hint or Degree.
Beim Herrn Geist geht's um die Beobachtung, dass ein parallel_degree_policy=auto die Verwendung von direct path inserts hervorrufen kann, was zwar in gewisser Weise folgerichtig ist, aber die üblichen Nebeneffekte des direct path hervorruft (INSERT oberhalb der HWM und "ORA-12838: cannot read/modify an object after modifying it in parallel"), wobei besonders ORA-12838 ungünstige Wirkungen haben kann:
An existing application logic might break because it attempts to re-access the object after the now direct-path insert within the the same transaction which will end up with an "ORA-12838: cannot read/modify an object after modifying it in parallel".
Bei den Herren Hesse und Geist gibt's die dort üblichen Testfällen, mit deren Hilfe die Effekte nachvollzogen und überprüft werden können.

Nachtrag 12.11.2011: In seinem Kommentar weist Randolf Geist darauf hin, dass Uwe Hesses Beobachtung der Ausschaltung von Parallel-Hints durch parallel_degree_policy=AUTO wahrscheinlich auf Bug 10628995 beruht. In seinem Kommentar zu Uwe Hesses Blog kommt Greg Rahn zur gleichen Einschätzung.

2 Kommentare:

  1. Hallo Martin,

    zwei Kommentare:

    1. Ich denke, Uwe Hesse hat einen Bug getroffen (10628995), und von daher entsprechen seine Testergebnisse nicht dem erwarteten Verhalten. Auto DOP sollte nicht alles "overrulen", sondern sehr wohl expliziten Angaben von Parallel Degrees in Hints mit "alter" Schreibweise, wie z.B. PARALLEL(T, 8) oder PARALLEL(T), Vorrang geben

    2. Bezüglich meines Posts: Ich finde tatsächlich das Problem mit dem Direct-Path Insert, der unentdeckt bleibt und zu einem unerwarteten Segment-Wachstum führen kann (nicht unbedingt, je nach Anwendung) für schwerwiegender als das andere Problem mit dem ORA-12838. Dieser Fehler wird eher früher als später entdeckt und gefixt werden können - das andere Problem hat bei Kunden von mir schon zu unliebsamen Überraschungen geführt - nicht jeder überwacht seine Segmente und überprüft, ob deren Größe in korrektem Verhältnis zum eigentlichen Inhalt stehen.

    Randolf

    AntwortenLöschen
  2. Hallo Randolf,

    vielen Dank für die Hinweise. Dass die vergrößerten Segmente leicht übersehen werden und damit ein unangenehmeres Problem sein können als der ORA-12838-Fehler, leuchtet mir ein. In ETL-Zusammenhängen stört mich die Speichernutzung oberhalb der HWM in der Regel nicht, weil meine Tabellen/Partitionen häufig initial leer sind - deshalb schien mir dieser Aspekt weniger unerfreulich.

    Martin

    AntwortenLöschen