[FEAT MERGE]4.2 PX Feature

This commit is contained in:
qianchanger
2023-04-30 04:41:31 +00:00
committed by ob-robot
parent 09ed904b58
commit 3ae36f5774
134 changed files with 10295 additions and 1480 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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