
OPTIMIZER COST BASED TRANSFORMATION - 日本エクセム株式会社 Oracleパラメータ
基本情報
Parameter情報
説明
Subquery UnnestingやView MergingなどのQuery TransformationをCost basedで行うかどうかを指定します。Cost Based Query Transformationは10gで導入された概念で、既定値は常にTrueです。Oracle9iまではOracleは、可能な、常にQuery Transformationを試みます。しかし、10gからコスト(Cost)を考慮して、Subquery UnnestingとView Mergingが費用を減らすのに役立つ場合にのみ実行します。
注意
実行計画以上のCost Based Transformation
9iのバージョンで正常にSubquery UnnestingやView Mergingが行われるクエリが10gでは、変換が発生しないことがあります。統計情報が正確であれば、Oracleのほとんどの場合、最適の判断をするが、時折、特定のクエリの場合には、変換が行われないことにより、非効率的な実行計画に変わることがあります。このような場合には、_OPTIMIZER_COST_BASED_TRANSFORMATIONパラメータの値をOFFに変更したり、OPT_PARAMヒントを利用して、そのパラメータをStatementレベルで変更する必要があります。
10053 TraceとCost Based Transformation
10gR2から10053 TraceにQuery Transformation過程が詳細に記録されます。したがってCost Base Transformation過程も10053 Traceを利用してTroubleshootingが可能となりました。10053 Trace FileでのQuery Transformationデバッグの例は、以下の通りです。
上記の例では、ROWNUMによってCVM(Complex View Merging)とPM(Predicate Move-Around)が行われ、このていないことを知ることができます。