Luca Canali kombiniert in seinem Artikel Oracle Optimizer Investigated with Flame Graphs die von Brendan Gregg entwickelte Visualisierungstechnik der Flame Graphs mit den von Tanel Poder zusammengetragenen Informationen zur stack trace Analyse im Rahmen des Troubleshootings in Oracle Datenbanken. Dabei zeigt er anhand eines überschaubaren Beispiels die unterschiedlichen Graphen, die sich für eine Query ergeben, die zunächst mit dem rule based optimizer (RBO), dann mit dem cost based optimizer (CBO) der Version 11 und schließlich mit dem cost based optimizer der Version 12 (mit adaptive optimization) optimiert wird. Die zentrale Beobachtung dabei ist, dass der im Rahmen des Parsings zu absolvierende code path immer länger und komplexer wird: während der RBO sich an sein statisches Regelwerk halten konnte, verwendet der CBO zahlreiche Prüfungen, Transformationen und Fallunterscheidungen, die die Optimierung aufwändiger machen, aber in der Regel zu einem besseren Ergebnis führen - wobei die Verfahren von Version zu Version immer elaborierter werden. Das ist jetzt kein besonders überraschendes Ergebnis, aber die Visualisierung der unterschiedlichen Vorgehensweisen mit Hilfe der Flame Graphs lässt die Unterschiede ausgesprochen anschaulich werden.
Keine Kommentare:
Kommentar veröffentlichen