This post is just a compilation of the links to other people’s articles and short descriptions about new SQL PLAN OPERATIONS and HINTS with a couple little additions from me.
OPERATION_NAME | Description | Links |
---|---|---|
JSONTABLE EVALUATION | JSON_TABLE execution | |
XMLTABLE EVALUATION | This is new name for “COLLECTION ITERATOR PICKLER FETCH [XQSEQUENCEFROMXMLTYPE]”. XPATH EVALUATION still exists. | |
MATCH RECOGNIZE | New feature “PATTERN MATCHING” | |
STATISTICS COLLECTOR | Optimizer statistics collector |
|
OPTIMIZER STATISTICS GATHERING | Automatic Optimizer statistics gathering during the following types of bulk loads:
|
|
CUBE JOIN | Joining Cubes to Tables and Views |
|
EXPRESSION EVALUATION | Each parallel slave executes scalar correllated subqueries from SELECT-list. | |
parallel “FILTER” | Each parallel slave executes own FILTER operation
Example
[sourcecode language=”SQL” highlight=”19″] Explained. PLAN_TABLE_OUTPUT ——————————————————————————————————- Predicate Information (identified by operation id): 3 – filter( EXISTS (SELECT /*+ NO_UNNEST */ 0 FROM "SYS"."DUAL" "DUAL" WHERE "DUMMY"=:B1)) [collapse]
|
|
PX SELECTOR | Execution of the serial plan parts in the one of the parallel slaves | |
PX SEND 1 SLAVE | Execution of the serial plan parts in the one of the parallel slaves(single DFO tree) | |
PX TASK | Parallel access to fixed tables(x$) by each node in RAC | |
HYBRID HASH DISTRIBUTION | Adaptive parallel data distribution that does not decide the final data distribution(HASH, BROADCAST or SKEW) method until execution time. | |
PQ_DISTRIBUTE_WINDOW | In addition to “PX SEND” HASH-distribution for WINDOW functions, “PX SEND RANGE” was added
Example
[sourcecode language=”SQL” highlight=”7,9,17″] [collapse]
Hint PQ_DISTRIBUTE_WINDOW(@Query_block N), where N=1 for hash, N=2 for range, N=3 for list |
|
VECTOR KEY VECTOR |
Inmemory aggregation |
|
RECURSIVE ITERATION | Unknown | |
WINDOW CONSOLIDATOR | WINDOW CONSOLIDATOR BUFFER for parallel execution of analyrical WINDOW aggregation functions
Example
[sourcecode language=”SQL” highlight=”12″] Note [collapse]
|
|
DETECT END | Unknown | |
DM EXP MAX AGGR | Unknown | |
DM EXP MAX PAR | Unknown | |
FAULT-TOLERANCE BUFFER | The fault-tolerance for parallel statement. Patent #US8572051: Making parallel execution of structured query language statements fault-tolerant |
|
See also:
- Randolf Geist “12c New Optimizer Features”
- Randolf Geist “Parallel Execution 12c New Features Overview”
HINTS:
PATH | HINT_CLASS | HINT_NAME | VERSION | VERSION_OUTLINE |
---|---|---|---|---|
ALL | WITH_PLSQL | WITH_PLSQL | 12.1.0.1 | |
ALL -> ANSI_REARCH | ANSI_REARCH 1 | ANSI_REARCH NO_ANSI_REARCH |
12.1.0.2 | 12.1.0.2 |
ALL -> EXECUTION | BATCH_TABLE_ACCESS_BY_ROWID 2 | BATCH_TABLE_ACCESS_BY_ROWID NO_BATCH_TABLE_ACCESS_BY_ROWID |
12.1.0.1 | 12.1.0.1 |
INMEMORY | INMEMORY NO_INMEMORY |
12.1.0.2 | 12.1.0.2 | |
INMEMORY_PRUNING | INMEMORY_PRUNING NO_INMEMORY_PRUNING |
12.1.0.2 | 12.1.0.2 | |
ALL -> COMPILATION -> ZONEMAP | ZONEMAP | ZONEMAP NO_ZONEMAP |
12.1.0.1 | 12.1.0.1 |
ALL -> COMPILATION -> DATA_SECURITY_REWRITE | DATA_SECURITY_REWRITE_LIMIT | DATA_SECURITY_REWRITE_LIMIT NO_DATA_SECURITY_REWRITE |
12.1.0.1 | 12.1.0.1 |
ALL -> COMPILATION -> CBO | CLUSTER_BY_ROWID | CLUSTER_BY_ROWID CLUSTER_BY_ROWID |
12.1.0.1(11.2.0.4) | 12.1.0.1 |
ALL -> COMPILATION -> CBO -> ACCESS_PATH -> BITMAP_TREE | BITMAP_AND | BITMAP_AND | 12.1.0.1 | 12.1.0.1 |
ALL -> COMPILATION -> CBO -> ADAPTIVE_PLAN | ADAPTIVE_PLAN | ADAPTIVE_PLAN NO_ADAPTIVE_PLAN |
12.1.0.2 | 12.1.0.2 |
ALL -> COMPILATION -> CBO -> AUTO_REOPT | AUTO_REOPTIMIZE 2 | AUTO_REOPTIMIZE NO_AUTO_REOPTIMIZE |
12.1.0.1 | |
ALL -> COMPILATION -> CBO -> JOIN_METHOD | ANTIJOIN | CUBE_AJ | 12.1.0.1 | 12.1.0.1 |
SEMIJOIN | CUBE_SJ | 12.1.0.1 | 12.1.0.1 | |
ALL -> COMPILATION -> CBO -> JOIN_METHOD -> USE_CUBE | JOIN | USE_CUBE NO_USE_CUBE |
12.1.0.1 | 12.1.0.1 |
ALL -> COMPILATION -> CBO -> PARTIAL_JOIN | PARTIAL_JOIN | PARTIAL_JOIN NO_PARTIAL_JOIN |
12.1.0.1 | 12.1.0.1 |
ALL -> COMPILATION -> CBO -> PARTITION | USE_HIDDEN_PARTITIONS | USE_HIDDEN_PARTITIONS | 12.1.0.1 | |
ALL -> COMPILATION -> CBO -> PQ | PARTIAL_ROLLUP_PUSHDOWN | PARTIAL_ROLLUP_PUSHDOWN NO_PARTIAL_ROLLUP_PUSHDOWN |
12.1.0.1 | 12.1.0.1 |
PQ_CONCURRENT_UNION | PQ_CONCURRENT_UNION NO_PQ_CONCURRENT_UNION |
12.1.0.1 | 12.1.0.1 | |
PQ_DISTRIBUTE_WINDOW | PQ_DISTRIBUTE_WINDOW | 12.1.0.1 | 12.1.0.1 | |
PQ_FILTER | PQ_FILTER | 12.1.0.1 | 12.1.0.1 | |
PQ_SKEW | PQ_SKEW NO_PQ_SKEW |
12.1.0.1 | 12.1.0.1 | |
PX_FAULT_TOLERANCE | PX_FAULT_TOLERANCE NO_PX_FAULT_TOLERANCE |
12.1.0.1 | 12.1.0.1 | |
ALL -> COMPILATION -> CBO -> PQ -> PQ_REPLICATE | PQ_REPLICATE | PQ_REPLICATE NO_PQ_REPLICATE |
12.1.0.1 | 12.1.0.1 |
ALL -> COMPILATION -> CBO -> STATS -> DBMS_STATS | GATHER_OPTIMIZER_STATISTICS | GATHER_OPTIMIZER_STATISTICS NO_GATHER_OPTIMIZER_STATISTICS |
12.1.0.1 | |
ALL -> COMPILATION -> TRANSFORMATION | ELIM_GROUPBY ? | ELIM_GROUPBY NO_ELIM_GROUPBY |
||
ALL -> COMPILATION -> CBO -> CBQT -> VECTOR_AGG and ALL -> COMPILATION -> TRANSFORMATION -> CBQT -> VECTOR_AGG |
USE_VECTOR_AGGREGATION | USE_VECTOR_AGGREGATION NO_USE_VECTOR_AGGREGATION |
12.1.0.2 | 12.1.0.2 |
VECTOR_TRANSFORM | VECTOR_TRANSFORM NO_VECTOR_TRANSFORM |
12.1.0.2 | 12.1.0.2 | |
VECTOR_TRANSFORM_DIMS | VECTOR_TRANSFORM_DIMS NO_VECTOR_TRANSFORM_DIMS |
12.1.0.2 | 12.1.0.2 | |
VECTOR_TRANSFORM_FACT | VECTOR_TRANSFORM_FACT NO_VECTOR_TRANSFORM_FACT |
12.1.0.2 | 12.1.0.2 | |
ALL -> COMPILATION -> TRANSFORMATION -> HEURISTIC -> DECORRELATE | DECORRELATE | DECORRELATE NO_DECORRELATE |
12.1.0.1 | 12.1.0.1 |