GaussDB(DWS)性能调优:性能瓶颈在于聚合计算(group by对应Hash Aggregate算子)案例

1、【问题描述】

DM场景下,语句执行计划为

Vector Hash Aggregate
  Vector Streaming(type: REDISTRIBUTE)
    Vector Hash Aggregate

执行时间在最下边这一层Vector Hash Aggregate增加过多且聚合后行数减少程度不大(<30%)

2、【原始语句】

SELECT /*+ set global(agg_redistribute_enhancement on) set global (best_agg_plan 3)*/dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ptd_amt") as "ptd_amt",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."qtd_amt") as "qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ytd_amt") as "ytd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ptd_amt") as "py_ptd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_qtd_amt") as "py_qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ytd_amt") as "py_ytd_amt" FROM fin_dmr_ebgdis.dm_ebg_instm_psp_pl_ord_sum_w_v where 1=1  and 1=1  AND dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm" = 202307 group by dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name" limit 200;

3、【性能分析】

可以看出,存在问题:

  • id=7 Hash Aggregate多余
    GaussDB(DWS)性能调优:性能瓶颈在于聚合计算(group by对应Hash Aggregate算子)案例
    该语句hint best_agg_plan = 3,采用了hashagg+redistribute+hashagg的方法。然而,id=7那一层Hash Aggregate并没有降低30%以上的数据量,并且存在耗时过长的效果,影响sql语句执行性能

补充:

best_agg_plan
best_agg_plan = 2

采用方法:

Vector Hash Aggregate
Vector Streaming(type: REDISTRIBUTE)
best_agg_plan = 3

采用方法:

Vector Hash Aggregate
Vector Streaming(type: REDISTRIBUTE)
Vector Hash Aggregate

其中,best_agg_plan = 2适用于DN一次聚集后行数缩减不明显的场景,这时可以以所有数据重分布的代价,省略DN的一次聚集操作。而best_agg_plan = 3适用于DN一次聚集后行数缩减明显的场景

agg_redistribute_enhancement

当进行Agg操作时,如果包含多个group by列且均不为分布列,进行重分布时会选择某一group by列进行重分布(选择估算distinct值最多的一个可重分布列作为重分布列)。——该参数常用于解决运行过程中聚合计算倾斜优化

【解决方法】:

改写旧语句的hint,如下所示

SELECT /*+ set global(agg_redistribute_enhancement on) set global (best_agg_plan 2)*/  
--改动语句 将set global (best_agg_plan 3) 变为 set global (best_agg_plan 2)
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ptd_amt") as "ptd_amt",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."qtd_amt") as "qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ytd_amt") as "ytd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ptd_amt") as "py_ptd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_qtd_amt") as "py_qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ytd_amt") as "py_ytd_amt" FROM fin_dmr_ebgdis.dm_ebg_instm_psp_pl_ord_sum_w_v where 1=1  and 1=1  AND dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm" = 202307 group by dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name" limit 200);

改动后的语句执行计划如下所示:
GaussDB(DWS)性能调优:性能瓶颈在于聚合计算(group by对应Hash Aggregate算子)案例
可以看出,少了一层Hash Aggregate提高了语句的执行效率,运行时间从300s+降低到了200s左右

视图原始SQL语句、优化前后的完整执行计划如附件所示

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317127.html

(0)
上一篇 9小时前
下一篇 9小时前

相关推荐

发表回复

登录后才能评论