replace ts related to ddl with scn.

This commit is contained in:
obdev
2022-11-28 02:21:13 +00:00
committed by ob-robot
parent bbec6aff49
commit 8a4d14122f
539 changed files with 17685 additions and 173434 deletions

View File

@ -16,29 +16,29 @@ Query Plan
-------------------------------------------
|0 |PX COORDINATOR | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | NESTED-LOOP JOIN | |
|3 | EXCHANGE IN DISTR | |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|5 | PX BLOCK ITERATOR | |
|6 | TABLE SCAN |t2 |
|7 | PX PARTITION ITERATOR | |
|8 | TABLE GET |t1 |
|2 | HASH JOIN | |
|3 | PX PARTITION ITERATOR | |
|4 | TABLE SCAN |t1 |
|5 | EXCHANGE IN DISTR | |
|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|7 | PX BLOCK ITERATOR | |
|8 | TABLE SCAN |t2 |
===========================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, 1, t2.c1, 1)]), filter(nil), rowset=256
1 - output([INTERNAL_FUNCTION(t1.c1, 1, t2.c1, 1)]), filter(nil), rowset=256, dop=3
2 - output([t2.c1], [t1.c1]), filter(nil), rowset=256,
conds(nil), nl_params_([t2.c1])
3 - output([t2.c1], [PARTITION_ID]), filter(nil), rowset=256
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID]), filter(nil), rowset=256, dop=3
5 - output([t2.c1]), filter(nil), rowset=256
6 - output([t2.c1]), filter(nil), rowset=256,
access([t2.c1]), partitions(p[0-5])
7 - output([t1.c1]), filter(nil), rowset=256
8 - output([t1.c1]), filter(nil), rowset=256,
2 - output([t1.c1], [t2.c1]), filter(nil), rowset=256,
equal_conds([t1.c1 = t2.c1]), other_conds(nil)
3 - output([t1.c1]), filter(nil), rowset=256
4 - output([t1.c1]), filter(nil), rowset=256,
access([t1.c1]), partitions(p[0-9])
5 - output([t2.c1]), filter(nil), rowset=256
6 - (#keys=1, [t2.c1]), output([t2.c1]), filter(nil), rowset=256, dop=3
7 - output([t2.c1]), filter(nil), rowset=256
8 - output([t2.c1]), filter(nil), rowset=256,
access([t2.c1]), partitions(p[0-5])
select /*+ USE_PX parallel(3) */* from
(select c1,count(*) over(partition by c1) c2 from
@ -58,24 +58,24 @@ c1 c2 c1 c2
explain basic
select a.c2,count(*) from (select /*+ USE_PX parallel(3) PQ_DISTRIBUTE(b HASH HASH) */a.c1,a.c2,b.c1 c3,b.c2 c4 from t1 a join t2 b on a.c1=b.c1)a group by a.c2;
Query Plan
================================================
|ID|OPERATOR |NAME |
------------------------------------------------
|0 |PX COORDINATOR | |
|1 | EXCHANGE OUT DISTR |:EX10002|
|2 | HASH GROUP BY | |
|3 | EXCHANGE IN DISTR | |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10001|
|5 | MATERIAL | |
|6 | HASH GROUP BY | |
|7 | NESTED-LOOP JOIN | |
|8 | EXCHANGE IN DISTR | |
|9 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|10| PX BLOCK ITERATOR | |
|11| TABLE SCAN |b |
|12| PX PARTITION ITERATOR | |
|13| TABLE GET |a |
================================================
==================================================
|ID|OPERATOR |NAME |
--------------------------------------------------
|0 |PX COORDINATOR | |
|1 | EXCHANGE OUT DISTR |:EX10002|
|2 | HASH GROUP BY | |
|3 | EXCHANGE IN DISTR | |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10001|
|5 | HASH GROUP BY | |
|6 | HASH JOIN | |
|7 | PART JOIN FILTER CREATE |:BF0000 |
|8 | EXCHANGE IN DISTR | |
|9 | EXCHANGE OUT DISTR (PKEY) |:EX10000|
|10| PX BLOCK ITERATOR | |
|11| TABLE SCAN |b |
|12| PX PARTITION HASH JOIN-FILTER|:BF0000 |
|13| TABLE SCAN |a |
==================================================
Outputs & filters:
-------------------------------------
@ -85,19 +85,19 @@ Outputs & filters:
group([a.c2]), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
3 - output([a.c2], [T_FUN_COUNT(*)]), filter(nil), rowset=256
4 - (#keys=1, [a.c2]), output([a.c2], [T_FUN_COUNT(*)]), filter(nil), rowset=256, dop=3
5 - output([a.c2], [T_FUN_COUNT(*)]), filter(nil), rowset=256
6 - output([a.c2], [T_FUN_COUNT(*)]), filter(nil), rowset=256,
5 - output([a.c2], [T_FUN_COUNT(*)]), filter(nil), rowset=256,
group([a.c2]), agg_func([T_FUN_COUNT(*)])
7 - output([a.c2]), filter(nil), rowset=256,
conds(nil), nl_params_([b.c1])
8 - output([PARTITION_ID], [b.c1]), filter(nil), rowset=256
9 - (#keys=1, [b.c1]), output([PARTITION_ID], [b.c1]), filter(nil), rowset=256, dop=3
6 - output([a.c2]), filter(nil), rowset=256,
equal_conds([a.c1 = b.c1]), other_conds(nil)
7 - output([b.c1]), filter(nil), rowset=256
8 - output([b.c1]), filter(nil), rowset=256
9 - (#keys=1, [b.c1]), output([b.c1]), filter(nil), rowset=256, dop=3
10 - output([b.c1]), filter(nil), rowset=256
11 - output([b.c1]), filter(nil), rowset=256,
access([b.c1]), partitions(p[0-5])
12 - output([a.c2]), filter(nil), rowset=256
13 - output([a.c2]), filter(nil), rowset=256,
access([a.c2]), partitions(p[0-9])
12 - output([a.c1], [a.c2]), filter(nil), rowset=256
13 - output([a.c1], [a.c2], [PARTITION_ID]), filter(nil), rowset=256,
access([a.c1], [a.c2]), partitions(p[0-9])
select a.c2,count(*) from (select /*+ USE_PX parallel(3) PQ_DISTRIBUTE(b HASH HASH) */a.c1,a.c2,b.c1 c3,b.c2 c4 from t1 a join t2 b on a.c1=b.c1)a group by a.c2;
c2 count(*)

View File

@ -6,16 +6,16 @@ Query Plan
=====================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------------
|0 |TEMP TABLE TRANSFORMATION | |1 |27 |
|1 | PX COORDINATOR | |1 |26 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |25 |
|3 | TEMP TABLE INSERT |TEMP1 |1 |25 |
|4 | HASH GROUP BY | |1 |25 |
|5 | EXCHANGE IN DISTR | |2 |25 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |2 |24 |
|7 | HASH GROUP BY | |2 |23 |
|8 | PX BLOCK ITERATOR | |1 |23 |
|9 | TABLE SCAN |t1 |1 |23 |
|0 |TEMP TABLE TRANSFORMATION | |1 |5 |
|1 | PX COORDINATOR | |1 |4 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |4 |
|3 | TEMP TABLE INSERT |TEMP1 |1 |3 |
|4 | HASH GROUP BY | |1 |3 |
|5 | EXCHANGE IN DISTR | |2 |3 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |2 |3 |
|7 | HASH GROUP BY | |2 |2 |
|8 | PX BLOCK ITERATOR | |1 |1 |
|9 | TABLE SCAN |t1 |1 |1 |
|10| PX COORDINATOR | |1 |2 |
|11| EXCHANGE OUT DISTR |:EX20002 |1 |2 |
|12| SHARED HASH JOIN | |1 |1 |
@ -66,26 +66,26 @@ Query Plan
==================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |49 |
|1 | EXCHANGE OUT DISTR |:EX10003|1 |49 |
|2 | HASH GROUP BY | |1 |48 |
|3 | EXCHANGE IN DISTR | |2 |48 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10002|2 |48 |
|5 | HASH GROUP BY | |2 |47 |
|6 | SUBPLAN SCAN |VIEW1 |1 |47 |
|7 | MERGE GROUP BY | |1 |47 |
|8 | SORT | |1 |47 |
|9 | MERGE JOIN | |1 |47 |
|10| SORT | |1 |24 |
|11| EXCHANGE IN DISTR | |1 |24 |
|12| EXCHANGE OUT DISTR (HASH)|:EX10000|1 |24 |
|13| PX BLOCK ITERATOR | |1 |23 |
|14| TABLE SCAN |b |1 |23 |
|15| SORT | |1 |24 |
|16| EXCHANGE IN DISTR | |1 |24 |
|17| EXCHANGE OUT DISTR (HASH)|:EX10001|1 |24 |
|18| PX BLOCK ITERATOR | |1 |23 |
|19| TABLE SCAN |t1 |1 |23 |
|0 |PX COORDINATOR | |1 |5 |
|1 | EXCHANGE OUT DISTR |:EX10003|1 |5 |
|2 | HASH GROUP BY | |1 |5 |
|3 | EXCHANGE IN DISTR | |2 |5 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10002|2 |4 |
|5 | HASH GROUP BY | |2 |4 |
|6 | SUBPLAN SCAN |VIEW1 |1 |3 |
|7 | MERGE GROUP BY | |1 |3 |
|8 | SORT | |1 |3 |
|9 | MERGE JOIN | |1 |3 |
|10| SORT | |1 |2 |
|11| EXCHANGE IN DISTR | |1 |2 |
|12| EXCHANGE OUT DISTR (HASH)|:EX10000|1 |2 |
|13| PX BLOCK ITERATOR | |1 |1 |
|14| TABLE SCAN |b |1 |1 |
|15| SORT | |1 |2 |
|16| EXCHANGE IN DISTR | |1 |2 |
|17| EXCHANGE OUT DISTR (HASH)|:EX10001|1 |2 |
|18| PX BLOCK ITERATOR | |1 |1 |
|19| TABLE SCAN |t1 |1 |1 |
==================================================================
Outputs & filters:
@ -123,21 +123,21 @@ Query Plan
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |49 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |48 |
|2 | MERGE GROUP BY | |1 |47 |
|3 | SORT | |1 |47 |
|4 | MERGE JOIN | |1 |47 |
|5 | SORT | |1 |24 |
|6 | EXCHANGE IN DISTR | |1 |24 |
|7 | EXCHANGE OUT DISTR (HASH)|:EX10000|1 |24 |
|8 | PX BLOCK ITERATOR | |1 |23 |
|9 | TABLE SCAN |b |1 |23 |
|10| SORT | |1 |24 |
|11| EXCHANGE IN DISTR | |1 |24 |
|12| EXCHANGE OUT DISTR (HASH)|:EX10001|1 |24 |
|13| PX BLOCK ITERATOR | |1 |23 |
|14| TABLE SCAN |t1 |1 |23 |
|0 |PX COORDINATOR | |1 |5 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |4 |
|2 | MERGE GROUP BY | |1 |4 |
|3 | SORT | |1 |4 |
|4 | MERGE JOIN | |1 |4 |
|5 | SORT | |1 |2 |
|6 | EXCHANGE IN DISTR | |1 |2 |
|7 | EXCHANGE OUT DISTR (HASH)|:EX10000|1 |2 |
|8 | PX BLOCK ITERATOR | |1 |1 |
|9 | TABLE SCAN |t1 |1 |1 |
|10| SORT | |1 |2 |
|11| EXCHANGE IN DISTR | |1 |2 |
|12| EXCHANGE OUT DISTR (HASH)|:EX10001|1 |2 |
|13| PX BLOCK ITERATOR | |1 |1 |
|14| TABLE SCAN |b |1 |1 |
=============================================================
Outputs & filters:
@ -149,16 +149,16 @@ Outputs & filters:
3 - output([t1.c2], [b.__pk_increment], [t1.c1], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256, sort_keys([b.__pk_increment, ASC], [t1.c2, ASC])
4 - output([t1.c2], [b.__pk_increment], [t1.c1], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256,
equal_conds([t1.c1 = b.c1]), other_conds(nil)
5 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256, sort_keys([b.c1, ASC])
6 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256
7 - (#keys=1, [b.c1]), output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256, dop=2
8 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256
9 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256,
access([b.__pk_increment], [b.c1], [b.c2], [b.c3]), partitions(p0)
10 - output([t1.c2], [t1.c1]), filter(nil), rowset=256, sort_keys([t1.c1, ASC])
11 - output([t1.c2], [t1.c1]), filter(nil), rowset=256
12 - (#keys=1, [t1.c1]), output([t1.c2], [t1.c1]), filter(nil), rowset=256, dop=2
13 - output([t1.c1], [t1.c2]), filter(nil), rowset=256
14 - output([t1.c1], [t1.c2]), filter(nil), rowset=256,
5 - output([t1.c2], [t1.c1]), filter(nil), rowset=256, sort_keys([t1.c1, ASC])
6 - output([t1.c2], [t1.c1]), filter(nil), rowset=256
7 - (#keys=1, [t1.c1]), output([t1.c2], [t1.c1]), filter(nil), rowset=256, dop=2
8 - output([t1.c1], [t1.c2]), filter(nil), rowset=256
9 - output([t1.c1], [t1.c2]), filter(nil), rowset=256,
access([t1.c1], [t1.c2]), partitions(p0)
10 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256, sort_keys([b.c1, ASC])
11 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256
12 - (#keys=1, [b.c1]), output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256, dop=2
13 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256
14 - output([b.__pk_increment], [b.c1], [b.c2], [b.c3]), filter(nil), rowset=256,
access([b.__pk_increment], [b.c1], [b.c2], [b.c3]), partitions(p0)

View File

@ -10,10 +10,10 @@ Query Plan
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |184 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|2 | PX PARTITION ITERATOR| |1 |183 |
|3 | TABLE SCAN |t1 |1 |183 |
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
====================================================
Outputs & filters:
@ -29,10 +29,10 @@ Query Plan
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |184 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|2 | PX PARTITION ITERATOR| |1 |183 |
|3 | TABLE SCAN |t1 |1 |183 |
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
====================================================
Outputs & filters:
@ -48,10 +48,10 @@ Query Plan
================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------
|0 |PX COORDINATOR | |1 |13 |
|1 | EXCHANGE OUT DISTR|:EX10000|1 |13 |
|2 | PX BLOCK ITERATOR| |1 |13 |
|3 | TABLE SCAN |t1 |1 |13 |
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR|:EX10000|1 |1 |
|2 | PX BLOCK ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1 |1 |1 |
================================================
Outputs & filters:
@ -67,10 +67,10 @@ Query Plan
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |184 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|2 | PX PARTITION ITERATOR| |1 |183 |
|3 | TABLE SCAN |t1 |1 |183 |
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
====================================================
Outputs & filters:
@ -86,10 +86,10 @@ Query Plan
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |184 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|2 | PX PARTITION ITERATOR| |1 |183 |
|3 | TABLE SCAN |t1 |1 |183 |
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
====================================================
Outputs & filters:
@ -105,10 +105,10 @@ Query Plan
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |184 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|2 | PX PARTITION ITERATOR| |1 |183 |
|3 | TABLE SCAN |t1 |1 |183 |
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
====================================================
Outputs & filters:

View File

@ -295,20 +295,21 @@ Outputs & filters:
explain basic delete /*+use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c1 and t_p.c1 >= 5;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 | PX COORDINATOR | |
|2 | EXCHANGE OUT DISTR |:EX10001|
|3 | NESTED-LOOP JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |t_p |
|8 | PX PARTITION ITERATOR | |
|9 | TABLE GET |t_p4 |
============================================
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 | PX COORDINATOR | |
|2 | EXCHANGE OUT DISTR |:EX10001|
|3 | HASH JOIN | |
|4 | PART JOIN FILTER CREATE |:BF0000 |
|5 | EXCHANGE IN DISTR | |
|6 | EXCHANGE OUT DISTR (PKEY) |:EX10000|
|7 | PX BLOCK ITERATOR | |
|8 | TABLE SCAN |t_p4 |
|9 | PX PARTITION HASH JOIN-FILTER|:BF0000 |
|10| TABLE SCAN |t_p |
===============================================
Outputs & filters:
-------------------------------------
@ -316,15 +317,16 @@ Outputs & filters:
1 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
2 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256, dop=4
3 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256,
conds(nil), nl_params_([t_p.c1])
4 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256
5 - (#keys=1, [t_p.c1]), output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256, dop=10
6 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
7 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256,
equal_conds([t_p.c1 = t_p4.c1]), other_conds(nil)
4 - output([t_p4.c1]), filter(nil), rowset=256
5 - output([t_p4.c1]), filter(nil), rowset=256
6 - (#keys=1, [t_p4.c1]), output([t_p4.c1]), filter(nil), rowset=256, dop=10
7 - output([t_p4.c1]), filter(nil), rowset=256
8 - output([t_p4.c1]), filter(nil), rowset=256,
access([t_p4.c1]), partitions(p[0-3])
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
10 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256,
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
8 - output(nil), filter(nil), rowset=256
9 - output(nil), filter(nil), rowset=256,
access(nil), partitions(p[0-3])
delete /*+use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c1 and t_p.c1 >= 5;
select * from t_p order by c1;
@ -342,20 +344,21 @@ insert into t_p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,
call dbms_stats.gather_table_stats('test','t_p');
explain basic delete /*+no_use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c2 and t_p.c1 >= 5;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 | PX COORDINATOR | |
|2 | EXCHANGE OUT DISTR |:EX10001|
|3 | NESTED-LOOP JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |t_p4 |
|8 | PX PARTITION ITERATOR | |
|9 | TABLE GET |t_p |
============================================
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 | PX COORDINATOR | |
|2 | EXCHANGE OUT DISTR |:EX10001|
|3 | HASH JOIN | |
|4 | PART JOIN FILTER CREATE |:BF0000 |
|5 | EXCHANGE IN DISTR | |
|6 | EXCHANGE OUT DISTR (PKEY) |:EX10000|
|7 | PX BLOCK ITERATOR | |
|8 | TABLE SCAN |t_p4 |
|9 | PX PARTITION HASH JOIN-FILTER|:BF0000 |
|10| TABLE SCAN |t_p |
===============================================
Outputs & filters:
-------------------------------------
@ -363,32 +366,34 @@ Outputs & filters:
1 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
2 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256, dop=4
3 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256,
conds(nil), nl_params_([t_p4.c2])
4 - output([PARTITION_ID], [t_p4.c2]), filter(nil), rowset=256
5 - (#keys=1, [t_p4.c2]), output([PARTITION_ID], [t_p4.c2]), filter(nil), rowset=256, dop=10
6 - output([t_p4.c2]), filter(nil), rowset=256
7 - output([t_p4.c2]), filter([t_p4.c2 >= 5]), rowset=256,
equal_conds([t_p.c1 = t_p4.c2]), other_conds(nil)
4 - output([t_p4.c2]), filter(nil), rowset=256
5 - output([t_p4.c2]), filter(nil), rowset=256
6 - (#keys=1, [t_p4.c2]), output([t_p4.c2]), filter(nil), rowset=256, dop=10
7 - output([t_p4.c2]), filter(nil), rowset=256
8 - output([t_p4.c2]), filter([t_p4.c2 >= 5]), rowset=256,
access([t_p4.c2]), partitions(p[0-3])
8 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256,
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
10 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256,
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
explain basic delete /*+use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c2 and t_p.c1 >= 5;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 | PX COORDINATOR | |
|2 | EXCHANGE OUT DISTR |:EX10001|
|3 | NESTED-LOOP JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |t_p4 |
|8 | PX PARTITION ITERATOR | |
|9 | TABLE GET |t_p |
============================================
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 | PX COORDINATOR | |
|2 | EXCHANGE OUT DISTR |:EX10001|
|3 | HASH JOIN | |
|4 | PART JOIN FILTER CREATE |:BF0000 |
|5 | EXCHANGE IN DISTR | |
|6 | EXCHANGE OUT DISTR (PKEY) |:EX10000|
|7 | PX BLOCK ITERATOR | |
|8 | TABLE SCAN |t_p4 |
|9 | PX PARTITION HASH JOIN-FILTER|:BF0000 |
|10| TABLE SCAN |t_p |
===============================================
Outputs & filters:
-------------------------------------
@ -396,14 +401,15 @@ Outputs & filters:
1 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
2 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256, dop=4
3 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256,
conds(nil), nl_params_([t_p4.c2])
4 - output([PARTITION_ID], [t_p4.c2]), filter(nil), rowset=256
5 - (#keys=1, [t_p4.c2]), output([PARTITION_ID], [t_p4.c2]), filter(nil), rowset=256, dop=10
6 - output([t_p4.c2]), filter(nil), rowset=256
7 - output([t_p4.c2]), filter([t_p4.c2 >= 5]), rowset=256,
equal_conds([t_p.c1 = t_p4.c2]), other_conds(nil)
4 - output([t_p4.c2]), filter(nil), rowset=256
5 - output([t_p4.c2]), filter(nil), rowset=256
6 - (#keys=1, [t_p4.c2]), output([t_p4.c2]), filter(nil), rowset=256, dop=10
7 - output([t_p4.c2]), filter(nil), rowset=256
8 - output([t_p4.c2]), filter([t_p4.c2 >= 5]), rowset=256,
access([t_p4.c2]), partitions(p[0-3])
8 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256,
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
10 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256,
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
delete /*+use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c2 and t_p.c1 >= 5;

View File

@ -73,27 +73,29 @@ Query Plan
=======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |143 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |142 |
|2 | SORT | |1 |141 |
|3 | PX PARTITION ITERATOR | |1 |141 |
|4 | NESTED-LOOP JOIN | |1 |141 |
|5 | TABLE SCAN |stu |1 |137 |
|6 | TABLE SCAN |score |1 |19 |
|0 |PX COORDINATOR MERGE SORT | |1 |13 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |12 |
|2 | SORT | |1 |11 |
|3 | PX PARTITION ITERATOR | |1 |11 |
|4 | MERGE JOIN | |1 |11 |
|5 | TABLE SCAN |score |1 |6 |
|6 | SORT | |1 |6 |
|7 | TABLE SCAN |stu |1 |6 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256, sort_keys([score.sid, ASC])
1 - output([score.sid], [INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256, dop=2
2 - output([score.sid], [stu.sid], [stu.cls], [stu.name], [score.subject], [score.score]), filter(nil), rowset=256, sort_keys([score.sid, ASC])
3 - output([score.sid], [stu.sid], [stu.cls], [stu.name], [score.subject], [score.score]), filter(nil), rowset=256
4 - output([score.sid], [stu.sid], [stu.cls], [stu.name], [score.subject], [score.score]), filter(nil), rowset=256,
conds(nil), nl_params_([stu.sid])
5 - output([stu.cls], [stu.sid], [stu.name]), filter(nil), rowset=256,
2 - output([score.sid], [stu.sid], [score.subject], [score.score], [stu.cls], [stu.name]), filter(nil), rowset=256, sort_keys([score.sid, ASC]), local merge sort
3 - output([score.sid], [stu.sid], [score.subject], [score.score], [stu.cls], [stu.name]), filter(nil), rowset=256
4 - output([score.sid], [stu.sid], [score.subject], [score.score], [stu.cls], [stu.name]), filter(nil), rowset=256,
equal_conds([stu.sid = score.sid]), other_conds(nil)
5 - output([score.sid], [score.subject], [score.score]), filter(nil), rowset=256,
access([score.sid], [score.subject], [score.score]), partitions(p[0-5])
6 - output([stu.sid], [stu.cls], [stu.name]), filter(nil), rowset=256, sort_keys([stu.sid, ASC])
7 - output([stu.cls], [stu.sid], [stu.name]), filter(nil), rowset=256,
access([stu.cls], [stu.sid], [stu.name]), partitions(p[0-5])
6 - output([score.sid], [score.subject], [score.score]), filter(nil), rowset=256,
access([GROUP_ID], [score.sid], [score.subject], [score.score]), partitions(p[0-5])
select /*+ USE_PX parallel(2) */ * from stu, score where stu.sid = score.sid order by score.sid;
sid name cls sid subject score

View File

@ -73,16 +73,16 @@ Query Plan
================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------
|0 |PX COORDINATOR | |0 |274 |
|1 | EXCHANGE OUT DISTR |:EX10001|0 |274 |
|2 | NESTED-LOOP JOIN | |0 |274 |
|3 | PX BLOCK ITERATOR | |1 |137 |
|4 | TABLE SCAN |score |1 |137 |
|5 | MATERIAL | |1 |137 |
|6 | EXCHANGE IN DISTR | |1 |137 |
|7 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000|1 |137 |
|8 | PX BLOCK ITERATOR | |1 |137 |
|9 | TABLE SCAN |stu |1 |137 |
|0 |PX COORDINATOR | |0 |11 |
|1 | EXCHANGE OUT DISTR |:EX10001|0 |11 |
|2 | NESTED-LOOP JOIN | |0 |11 |
|3 | PX BLOCK ITERATOR | |1 |6 |
|4 | TABLE SCAN |score |1 |6 |
|5 | MATERIAL | |1 |6 |
|6 | EXCHANGE IN DISTR | |1 |6 |
|7 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000|1 |6 |
|8 | PX BLOCK ITERATOR | |1 |6 |
|9 | TABLE SCAN |stu |1 |6 |
================================================================
Outputs & filters:
@ -134,15 +134,15 @@ Query Plan
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |163 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |162 |
|2 | SHARED HASH JOIN | |1 |161 |
|3 | EXCHANGE IN DISTR | |1 |138 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|1 |137 |
|5 | PX BLOCK ITERATOR | |1 |137 |
|6 | TABLE SCAN |score |1 |137 |
|7 | PX BLOCK ITERATOR | |1 |23 |
|8 | TABLE GET |teacher |1 |23 |
|0 |PX COORDINATOR | |1 |10 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |9 |
|2 | SHARED HASH JOIN | |1 |8 |
|3 | EXCHANGE IN DISTR | |1 |6 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|1 |6 |
|5 | PX BLOCK ITERATOR | |1 |6 |
|6 | TABLE SCAN |score |1 |6 |
|7 | PX BLOCK ITERATOR | |1 |2 |
|8 | TABLE GET |teacher |1 |2 |
=============================================================
Outputs & filters:

View File

@ -73,25 +73,27 @@ Query Plan
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |143 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |142 |
|2 | PX PARTITION ITERATOR| |1 |141 |
|3 | NESTED-LOOP JOIN | |1 |141 |
|4 | TABLE SCAN |stu |1 |137 |
|5 | TABLE SCAN |score |1 |19 |
|0 |PX COORDINATOR | |1 |13 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |12 |
|2 | PX PARTITION ITERATOR| |1 |11 |
|3 | MERGE JOIN | |1 |11 |
|4 | TABLE SCAN |score |1 |6 |
|5 | SORT | |1 |6 |
|6 | TABLE SCAN |stu |1 |6 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256
1 - output([INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256, dop=2
2 - output([stu.sid], [stu.cls], [stu.name], [score.sid], [score.subject], [score.score]), filter(nil), rowset=256
3 - output([stu.sid], [stu.cls], [stu.name], [score.sid], [score.subject], [score.score]), filter(nil), rowset=256,
conds(nil), nl_params_([stu.sid])
4 - output([stu.cls], [stu.sid], [stu.name]), filter(nil), rowset=256,
2 - output([stu.sid], [score.sid], [score.subject], [score.score], [stu.cls], [stu.name]), filter(nil), rowset=256
3 - output([stu.sid], [score.sid], [score.subject], [score.score], [stu.cls], [stu.name]), filter(nil), rowset=256,
equal_conds([stu.sid = score.sid]), other_conds(nil)
4 - output([score.sid], [score.subject], [score.score]), filter(nil), rowset=256,
access([score.sid], [score.subject], [score.score]), partitions(p[0-5])
5 - output([stu.sid], [stu.cls], [stu.name]), filter(nil), rowset=256, sort_keys([stu.sid, ASC])
6 - output([stu.cls], [stu.sid], [stu.name]), filter(nil), rowset=256,
access([stu.cls], [stu.sid], [stu.name]), partitions(p[0-5])
5 - output([score.sid], [score.subject], [score.score]), filter(nil), rowset=256,
access([GROUP_ID], [score.sid], [score.subject], [score.score]), partitions(p[0-5])
select /*+ USE_PX parallel(2) */ * from stu, score where stu.sid = score.sid;
sid name cls sid subject score

View File

@ -117,7 +117,7 @@ select query_sql, EXPECTED_WORKER_COUNT, USED_WORKER_COUNT from oceanbase.GV$OB_
| select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ subject, avg(score), max(score), min(score) from score group by subject | 4 | 4 |
| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ * from teacher | 3 | 3 |
| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject | 6 | 6 |
| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject | 6 | 6 |
| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject | 9 | 9 |
| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ subject, avg(score), max(score), min(score) from score group by subject | 6 | 6 |
| select /*+ TEST_SQL_AUDIT USE_PX parallel(4) */ * from teacher | 4 | 4 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------+