Jonathan Lewis weist - erneut - darauf hin, dass der dynamic sampling Hint in zwei Versionen existiert: als cursor level Hint und als statement level Hint, und dass die Anzahl der gesampelten Blocks von der Version abhängt: Level 4 auf cursor level verwendet 64 Blocks als Sample - sofern bestimmte Voraussetzungen gegeben sind, während Level 4 auf table level 256 Blocks verwendet, und das unabhängig von weiteren Voraussetzungen. Deshalb plädiert der Autor dafür, den Typ explizit zu erwähnen, wenn über dynamic sampling gesprochen wird. Darüber hinaus liefert er einen kleinen PL/SQL Block, der ein CBO Trace (Event 10053) erzeugt, um die unterschiedlichen Sample-Größen der beiden Verfahren anzuzeigen. Die Resultate zeigen, dass curosr level sampling in fast jedem Fall ein kleineres Sample verwendet und auf Level 1 nur unter ganz bestimmten Voraussetzungen überhaupt durchgeführt wird.
Darüber hinaus verweist Jonathan noch auf einen Artikel von Mohamed Houri, der sich mit der Unterscheidung von Fällen, in denen kein Sample erzeugt wurde, und Fällen, in denen das Sample ignoriert wurde, beschäftigt. Anlass für beide Artikel war dabei ein OTN-Thread, in dem eine recht intensive Diskussion des Sampling-Verhaltens erfolgte (unter Teilnahme von Mohamed, Jonathan, Randolf Geist, Dom Brooks, Stefan Koehler), und der schon für sich gesehen die Leküre lohnt.
Keine Kommentare:
Kommentar veröffentlichen