带你读《2022技术人的百宝黑皮书》——ODPS SQL优化总结(7) https://developer.aliyun.com/article/1247143?groupCode=taobaotech
数据字段类型检查
检查字段发现订单表中item_id是bigint,但是sku属性和商品属性中的item_id存储成了string。
最终尝试关联的时候都强制转换成string再观察,发现在资源充足的情况40分钟即可完成任务的计算。
优化总结
1. skewjoin或者传统拆分冷热数据可以解决常规的数据倾斜。
2. 关联时要确保左右数据类型一致,如不一致建议强制转换成string再进行关联。
3. 商品id竟然存在18位的情况,后续使用过程中建议还是统一存储成string,查询时最好也使用string类型,避免各种查询、分析带来的麻烦。
SQL优化案例二:分桶解决大表与大表的关联
背景
DWS层存储了淘宝天猫用户天增量粒度的用户与商品交互行为轻度汇总数据(浏览、收藏、加购、下单、交易等等),基于明细数据需要汇总用户N天内的行为汇总数据,分析数据发现无明显的数据分布不均匀情况,但执行效率明显不高。
SELECT cate_id ,shop_type ,user_id ,SUM(itm_sty_tme) AS itm_sty_tme ,SUM(itm_vst_cnt) AS itm_vst_cnt ,SUM(liv_sty_tme) AS liv_sty_tme ,SUM(liv_vst_cnt) AS liv_vst_cnt ,SUM(vdo_sty_tme) AS vdo_sty_tme ,SUM(vdo_vst_cnt) AS vdo_vst_cnt ,SUM(img_txt_sty_tme) AS img_txt_sty_tme ,SUM(img_txt_vst_cnt) AS img_txt_vst_cnt ,SUM(col_cnt_ufm) AS col_cnt_ufm ,SUM(crt_cnt_ufm) AS crt_cnt_ufm ,SUM(sch_cnt_ufm) AS sch_cnt_ufm ,SUM(mkt_iat_cnt) AS mkt_iat_cnt ,SUM(fan_flw_cnt) AS fan_flw_cnt ,SUM(fst_itm_sty_tme) AS fst_itm_sty_tme ,SUM(fst_itm_vst_cnt) AS fst_itm_vst_cnt ,SUM(col_cnt_fm) AS col_cnt_fm ,SUM(crt_cnt_fm) AS crt_cnt_fm ,SUM(sch_cnt_fm) AS sch_cnt_fm ,SUM(shr_cnt) AS shr_cnt ,SUM(cmt_cnt) AS cmt_cnt ,SUM(pvt_iat_cnt) AS pvt_iat_cnt FROM dws_tm_brd_pwr_deep_usr_cat_1d WHERE ds = TO_CHAR(DATEADD(TO_DATE('${bizdate}', 'yyyymmdd'), -89, 'dd'), 'yyyymmdd') AND cate_flag = '1' GROUP BY cate_id ,shop_type ,user_id
带你读《2022技术人的百宝黑皮书》——ODPS SQL优化总结(9) https://developer.aliyun.com/article/1247140?groupCode=taobaotech