[FEAT MERGE]4.2 PX Feature
This commit is contained in:
@ -268,6 +268,7 @@ _enable_plan_cache_mem_diagnosis
|
||||
_enable_protocol_diagnose
|
||||
_enable_px_batch_rescan
|
||||
_enable_px_bloom_filter_sync
|
||||
_enable_px_fast_reclaim
|
||||
_enable_px_ordered_coord
|
||||
_enable_reserved_user_dcl_restriction
|
||||
_enable_resource_limit_spec
|
||||
|
||||
@ -595,6 +595,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr
|
||||
12384 __all_virtual_thread 2 201001 1
|
||||
12393 __all_virtual_virtual_long_ops_status_mysql_sys_agent 2 201001 1
|
||||
12395 __all_virtual_timestamp_service 2 201001 1
|
||||
12397 __all_virtual_px_p2p_datahub 2 201001 1
|
||||
20001 GV$OB_PLAN_CACHE_STAT 1 201001 1
|
||||
20002 GV$OB_PLAN_CACHE_PLAN_STAT 1 201001 1
|
||||
20003 SCHEMATA 1 201002 1
|
||||
@ -893,6 +894,10 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr
|
||||
21404 V$OB_TIMESTAMP_SERVICE 1 201001 1
|
||||
21417 DBA_OB_EXTERNAL_TABLE_FILES 1 201001 1
|
||||
21418 ALL_OB_EXTERNAL_TABLE_FILES 1 201001 1
|
||||
21419 GV$OB_PX_P2P_DATAHUB 1 201001 1
|
||||
21420 V$OB_PX_P2P_DATAHUB 1 201001 1
|
||||
21421 GV$SQL_JOIN_FILTER 1 201001 1
|
||||
21422 V$SQL_JOIN_FILTER 1 201001 1
|
||||
21423 DBA_OB_TABLE_STAT_STALE_INFO 1 201001 1
|
||||
21425 CDB_OB_EXTERNAL_TABLE_FILES 1 201001 1
|
||||
check sys table count and table_id range success
|
||||
|
||||
@ -11,19 +11,20 @@ select /*+ USE_PX parallel(3) */* from
|
||||
(select c1,count(c2) c2 from t1 group by c1)c) a join
|
||||
(select c1,count(*) c2 from t2 group by c1)b on a.c1=b.c1 ;
|
||||
Query Plan
|
||||
===============================================
|
||||
|ID|OPERATOR |NAME |
|
||||
-----------------------------------------------
|
||||
|0 |PX COORDINATOR | |
|
||||
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|
||||
|2 | └─HASH JOIN | |
|
||||
|3 | ├─PX PARTITION ITERATOR | |
|
||||
|4 | │ └─TABLE FULL SCAN |t1 |
|
||||
|5 | └─EXCHANGE IN DISTR | |
|
||||
|6 | └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|
||||
|7 | └─PX BLOCK ITERATOR | |
|
||||
|8 | └─TABLE FULL SCAN |t2 |
|
||||
===============================================
|
||||
=================================================
|
||||
|ID|OPERATOR |NAME |
|
||||
-------------------------------------------------
|
||||
|0 |PX COORDINATOR | |
|
||||
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|
||||
|2 | └─HASH JOIN | |
|
||||
|3 | ├─PART JOIN FILTER CREATE |:RF0000 |
|
||||
|4 | │ └─PX PARTITION ITERATOR | |
|
||||
|5 | │ └─TABLE FULL SCAN |t1 |
|
||||
|6 | └─EXCHANGE IN DISTR | |
|
||||
|7 | └─EXCHANGE OUT DISTR (PKEY) |:EX10000|
|
||||
|8 | └─PX BLOCK HASH JOIN-FILTER|:RF0000 |
|
||||
|9 | └─TABLE FULL SCAN |t2 |
|
||||
=================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([INTERNAL_FUNCTION(t1.c1, 1, t2.c1, 1)]), filter(nil), rowset=256
|
||||
@ -32,16 +33,18 @@ Outputs & filters:
|
||||
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
|
||||
affinitize
|
||||
RF_TYPE(bloom), RF_EXPR[t1.c1]
|
||||
4 - output([t1.c1]), filter(nil), rowset=256
|
||||
affinitize
|
||||
5 - output([t1.c1]), filter(nil), rowset=256
|
||||
access([t1.c1]), partitions(p[0-9])
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([t1.c1]), range(MIN ; MAX)always true
|
||||
5 - output([t2.c1]), filter(nil), rowset=256
|
||||
6 - output([t2.c1]), filter(nil), rowset=256
|
||||
(#keys=1, [t2.c1]), dop=3
|
||||
7 - output([t2.c1]), filter(nil), rowset=256
|
||||
(#keys=1, [t2.c1]), dop=3
|
||||
8 - output([t2.c1]), filter(nil), rowset=256
|
||||
9 - output([t2.c1], [PARTITION_ID]), filter(nil), rowset=256
|
||||
access([t2.c1]), partitions(p[0-5])
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([t2.c1]), range(MIN ; MAX)always true
|
||||
@ -73,12 +76,12 @@ Query Plan
|
||||
|4 | └─EXCHANGE OUT DISTR (HASH) |:EX10001|
|
||||
|5 | └─HASH GROUP BY | |
|
||||
|6 | └─HASH JOIN | |
|
||||
|7 | ├─PART JOIN FILTER CREATE |:BF0000 |
|
||||
|7 | ├─PART JOIN FILTER CREATE |:RF0000 |
|
||||
|8 | │ └─EXCHANGE IN DISTR | |
|
||||
|9 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|
||||
|10| │ └─PX BLOCK ITERATOR | |
|
||||
|11| │ └─TABLE FULL SCAN |b |
|
||||
|12| └─PX PARTITION HASH JOIN-FILTER|:BF0000 |
|
||||
|12| └─PX PARTITION HASH JOIN-FILTER|:RF0000 |
|
||||
|13| └─TABLE FULL SCAN |a |
|
||||
=========================================================
|
||||
Outputs & filters:
|
||||
@ -96,6 +99,7 @@ Outputs & filters:
|
||||
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
|
||||
RF_TYPE(bloom), RF_EXPR[b.c1]
|
||||
8 - output([b.c1]), filter(nil), rowset=256
|
||||
9 - output([b.c1]), filter(nil), rowset=256
|
||||
(#keys=1, [b.c1]), dop=3
|
||||
|
||||
@ -283,20 +283,21 @@ select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c
|
||||
## broadcast shuffle
|
||||
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1=b.c2 order by a.c1,b.c1;
|
||||
Query Plan
|
||||
=================================================
|
||||
|ID|OPERATOR |NAME |
|
||||
-------------------------------------------------
|
||||
|0 |PX COORDINATOR MERGE SORT | |
|
||||
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|
||||
|2 | └─SORT | |
|
||||
|3 | └─HASH JOIN | |
|
||||
|4 | ├─PX PARTITION ITERATOR | |
|
||||
|5 | │ └─TABLE FULL SCAN |b |
|
||||
|6 | └─EXCHANGE IN DISTR | |
|
||||
|7 | └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|
||||
|8 | └─PX BLOCK ITERATOR | |
|
||||
|9 | └─TABLE FULL SCAN |a |
|
||||
=================================================
|
||||
===================================================
|
||||
|ID|OPERATOR |NAME |
|
||||
---------------------------------------------------
|
||||
|0 |PX COORDINATOR MERGE SORT | |
|
||||
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|
||||
|2 | └─SORT | |
|
||||
|3 | └─HASH JOIN | |
|
||||
|4 | ├─PART JOIN FILTER CREATE |:RF0000 |
|
||||
|5 | │ └─PX PARTITION ITERATOR | |
|
||||
|6 | │ └─TABLE FULL SCAN |b |
|
||||
|7 | └─EXCHANGE IN DISTR | |
|
||||
|8 | └─EXCHANGE OUT DISTR (PKEY) |:EX10000|
|
||||
|9 | └─PX BLOCK HASH JOIN-FILTER|:RF0000 |
|
||||
|10| └─TABLE FULL SCAN |a |
|
||||
===================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([INTERNAL_FUNCTION(a.c1, a.c2, b.c1, b.c2)]), filter(nil), rowset=256
|
||||
@ -307,17 +308,19 @@ Outputs & filters:
|
||||
sort_keys([a.c1, ASC], [b.c1, ASC])
|
||||
3 - output([a.c1], [b.c1], [b.c2], [a.c2]), filter(nil), rowset=256
|
||||
equal_conds([a.c1 = b.c2]), other_conds(nil)
|
||||
4 - output([b.c2], [b.c1]), filter(nil), rowset=256
|
||||
affinitize
|
||||
4 - output([b.c1], [b.c2]), filter(nil), rowset=256
|
||||
RF_TYPE(bloom), RF_EXPR[b.c2]
|
||||
5 - output([b.c2], [b.c1]), filter(nil), rowset=256
|
||||
affinitize
|
||||
6 - output([b.c2], [b.c1]), filter(nil), rowset=256
|
||||
access([b.c2], [b.c1]), partitions(p[0-5])
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([b.__pk_increment]), range(MIN ; MAX)always true
|
||||
6 - output([a.c1], [a.c2]), filter(nil), rowset=256
|
||||
7 - output([a.c1], [a.c2]), filter(nil), rowset=256
|
||||
(#keys=1, [a.c1]), dop=2
|
||||
8 - output([a.c1], [a.c2]), filter(nil), rowset=256
|
||||
(#keys=1, [a.c1]), dop=2
|
||||
9 - output([a.c1], [a.c2]), filter(nil), rowset=256
|
||||
10 - output([a.c1], [a.c2], [PARTITION_ID]), filter(nil), rowset=256
|
||||
access([a.c1], [a.c2]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([a.__pk_increment]), range(MIN ; MAX)always true
|
||||
|
||||
Reference in New Issue
Block a user