Donnerstag, März 12, 2015

Hybrid Hash Distribution für Parallele Operationen in 12c

Randolf Geist hat in jüngerer Vergangenheit einige Artikel zu den in 12c eingeführten Features mit Bezug zur Parallel Execution geschrieben. Darunter findet man:
  • 12c Parallel Execution New Features: Hybrid Hash Distribution - Part 1: die Adaptive Broadcast Distribution erlaubt für kleine "Left row sources" die Auswahl zwischen Broadcast- und Hash- (bzw. Round-Robin- und Hash-) Distribution zum Zeitpunkt der Ausführung abhängig von den Datenmengen durchzuführen - es handelt sich also um einen Korrektur-Mechanismus, der fehlerhafte Mengenabschätzungen behandelt. Anders als etwa die in 12c eingeführten adaptive joins, wird das Verfahren bei jeder folgenden Ausführung den Datenvolumina angepasst (also nicht bei der zweiten Ausführung festgeschrieben). Zum allgemeinen Verhalten und zu seinen Problemen gibt es ausführliche Beispiele. Interessant sind auch die Kommentare zum Artikel, in denen sich Yasin Baskan, der Produkt Manager für Parallel Execution bei Oracle, zum Thema äußert.
  • 12c Parallel Execution New Features: Hybrid Hash Distribution - Part 2: die Hybrid Distribution wurde eingeführt, um Join-Bedingungen mit starker Ungleichverteilung zu optimieren (was der Autor in älteren Artikeln ausführlich erläutert hat). Allerdings erfordert das Verfahren eine wiederholte Redistribution, selbst dann, wenn ein folgender Join mit den gleichen Join-Bedingungen operiert. Das bedeutet einerseits einen zusätzlichen Overhead und führt darüber hinaus unter bestimmten Umständen dazu, dass Operationen als BUFFERED durchgeführt werden (und somit blockieren), die ohne die Optimierung nicht blockiert hätten. Auch dazu gibt es natürlich wieder aussagekräftige Beispiele.
Einmal mehr ist der Sinn dieser Auflistung in erster Linie die Verlinkung der Artikel - die Details muss ich ohnehin immer wieder nachlesen, wenn ich entsprechenden Phänomenen begegne.

Keine Kommentare:

Kommentar veröffentlichen