范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

GaussDB(DWS)性能调优indexscan导致的性能问题识别与优化

  本文分享自华为云社区《GaussDB(DWS)性能调优:indexscan导致的性能问题识别与优化 #【玩转PB级数仓GaussDB(DWS)】-云社区-华为云》,作者: 譡里个檔 。
  通常跑批加工场景下,都是大数量做关联操作,通常不建议使用索引。有些时候因为计划误判导致使用索引的可能会导致严重的性能问题。本文从一个典型的索引导致性能的场景重发,剖析此类问题的特征,定位方法和解决方法
  1) 在某局点POC测试时发现某SQL语句比较慢,原始SQL如下WITH  /** etl_116583_7960703_994644 **/ LOADABLE as (select "boq_rel_type_id","to_pu_id","to_version","cycle_id",  "part_offset_flag","to_boq_id","descr","from_contract_id",  "from_version","from_pu_id","ss_id","to_contract_id",  "from_boq_id","enable_flag","last_update_date"   from (SELECT /*+ PARALLEL(4)*/     BOQ_REL.FROM_BOQ_ID,     BOQ_REL.TO_BOQ_ID,     BOQ_REL.FROM_PU_ID,     BOQ_REL.TO_PU_ID,     BOQ_REL.PART_OFFSET_FLAG,     BOQ_REL.DESCR,     BOQ_REL.SS_ID,     BOQ_REL.CYCLE_ID,     NVL(BOQ_REL.FROM_VERSION, "SNULL") FROM_VERSION,     NVL(BOQ_REL.TO_VERSION, "SNULL") TO_VERSION,     BOQ_REL.LAST_UPDATE_DATE,     FROM_CON.CONTRACT_ID AS FROM_CONTRACT_ID,     TO_CON.CONTRACT_ID AS TO_CONTRACT_ID,     CLA.CLASS_ID AS BOQ_REL_TYPE_ID,     BOQ_REL.ENABLE_FLAG FROM (SELECT A.FROM_BOQ_ID,                    A.TO_BOQ_ID,                    A.FROM_PU_ID,                    A.TO_PU_ID,                    A.FROM_CONTRACT_NUMBER,                    A.TO_CONTRACT_NUMBER,                    A.BOQ_REL_TYPE_CODE,                    A.PART_OFFSET_FLAG,                    A.DESCR,                    A.SS_ID,                    A.FROM_VERSION,                    A.TO_VERSION,                    A.LAST_UPDATE_DATE,                    A.CYCLE_ID,                    A.ENABLE_FLAG,                    DECODE(A.SS_ID, 2820, 2600, A.SS_ID) SS_ID_TMP,                    ROW_NUMBER() OVER(PARTITION BY FROM_BOQ_ID, TO_BOQ_ID, FROM_PU_ID, TO_PU_ID, FROM_CONTRACT_NUMBER, TO_CONTRACT_NUMBER, BOQ_REL_TYPE_CODE, FROM_VERSION, TO_VERSION                                      ORDER BY DECODE(A.SS_ID, 2820, 1, 2600, 2, 3)) RN               FROM LDB_MD_BOQ_REL A) BOQ_REL,            (SELECT CONTRACT_ID,                    HW_CONTRACT_NUM,                    SS_ID               FROM DWI_MD_CONTRACT              WHERE CONTRACT_ID IS NOT NULL                AND END_TIME = TO_DATE("4712-12-31", "YYYY-MM-DD")) FROM_CON,            (SELECT CONTRACT_ID,                    HW_CONTRACT_NUM,                    SS_ID               FROM DWI_MD_CONTRACT              WHERE CONTRACT_ID IS NOT NULL                AND END_TIME = TO_DATE("4712-12-31", "YYYY-MM-DD")) TO_CON,            (SELECT CLASS_ID,                    CODE,                    CLASS_TYPE_ID,                    SS_ID               FROM DWI_MD_CLASS              WHERE CLASS_TYPE_ID = 193) CLA      WHERE BOQ_REL.RN = 1        AND BOQ_REL.FROM_CONTRACT_NUMBER = FROM_CON.HW_CONTRACT_NUM        AND BOQ_REL.SS_ID = FROM_CON.SS_ID        AND BOQ_REL.TO_CONTRACT_NUMBER = TO_CON.HW_CONTRACT_NUM        AND BOQ_REL.SS_ID = TO_CON.SS_ID        AND BOQ_REL.BOQ_REL_TYPE_CODE = CLA.CODE        AND BOQ_REL.SS_ID_TMP = CLA.SS_ID     ) t ), BEFORE_TARGET as (select "from_contract_id","from_pu_id","ss_id","from_boq_id","from_version","to_version",         "crt_cycle_id","to_pu_id","to_boq_id","del_flag","last_upd_cycle_id","last_update_date",         "descr","enable_flag","crt_job_instance_id","dq_improve_flag","upd_job_instance_id",         "to_contract_id","part_offset_flag","boq_rel_type_id"      from (SELECT /*+PARALLEL(4)*/      FROM_BOQ_ID,      TO_BOQ_ID,      FROM_PU_ID,      TO_PU_ID,      FROM_CONTRACT_ID,      TO_CONTRACT_ID,      BOQ_REL_TYPE_ID,      PART_OFFSET_FLAG,      DESCR,      SS_ID,      CRT_CYCLE_ID,      LAST_UPD_CYCLE_ID,      DEL_FLAG,      DQ_IMPROVE_FLAG,      CRT_JOB_INSTANCE_ID,      UPD_JOB_INSTANCE_ID,      NVL(FROM_VERSION, "SNULL") FROM_VERSION,      NVL(TO_VERSION, "SNULL") TO_VERSION,      LAST_UPDATE_DATE,      ENABLE_FLAG       FROM DWI_MD_BOQ_REL     ) t ), CDC as (select LOADABLE."ss_id",LOADABLE."from_version",LOADABLE."from_boq_id",     LOADABLE."part_offset_flag",LOADABLE."from_pu_id",     case when BEFORE_TARGET.BOQ_REL_TYPE_ID is null and BEFORE_TARGET.FROM_BOQ_ID is null           and BEFORE_TARGET.FROM_CONTRACT_ID is null and BEFORE_TARGET.FROM_PU_ID is null           and BEFORE_TARGET.FROM_VERSION is null           and BEFORE_TARGET.TO_BOQ_ID is null and BEFORE_TARGET.TO_CONTRACT_ID is null           and BEFORE_TARGET.TO_PU_ID is null and BEFORE_TARGET.TO_VERSION is null          then 1           else 3      end as "change_code",     LOADABLE."to_version",LOADABLE."boq_rel_type_id",     LOADABLE."from_contract_id",LOADABLE."to_contract_id",     LOADABLE."descr",LOADABLE."last_update_date",     LOADABLE."to_pu_id",LOADABLE."enable_flag",LOADABLE."cycle_id",     LOADABLE."to_boq_id"  from LOADABLE   left join BEFORE_TARGET on LOADABLE.BOQ_REL_TYPE_ID = BEFORE_TARGET.BOQ_REL_TYPE_ID      and LOADABLE.FROM_BOQ_ID = BEFORE_TARGET.FROM_BOQ_ID and LOADABLE.FROM_CONTRACT_ID = BEFORE_TARGET.FROM_CONTRACT_ID      and LOADABLE.FROM_PU_ID = BEFORE_TARGET.FROM_PU_ID and LOADABLE.FROM_VERSION = BEFORE_TARGET.FROM_VERSION      and LOADABLE.TO_BOQ_ID = BEFORE_TARGET.TO_BOQ_ID and LOADABLE.TO_CONTRACT_ID = BEFORE_TARGET.TO_CONTRACT_ID      and LOADABLE.TO_PU_ID = BEFORE_TARGET.TO_PU_ID and LOADABLE.TO_VERSION = BEFORE_TARGET.TO_VERSION ), TFM_FILTER_DATA_TARGET_OUTPUT_U as (select CDC."to_pu_id",CDC."boq_rel_type_id",CDC."ss_id",     Current_Timestamp() as "dw_last_update_date",CDC."to_version",     CDC."from_version",20230104000000 as "last_upd_cycle_id",     CDC."from_contract_id",CDC."last_update_date",CDC."descr",     "N" as "del_flag",CDC."from_boq_id",CDC."to_boq_id",     CDC."enable_flag",CDC."from_pu_id",-1 as "upd_job_instance_id",     "N" as "dq_improve_flag",CDC."to_contract_id",     CDC."part_offset_flag"  from CDC where CDC.change_code=3 ) update DWI_MD_BOQ_REL TARGET_U  set "dq_improve_flag" = TFM_FILTER_DATA_TARGET_OUTPUT_U."dq_improve_flag",     "dw_last_update_date" = TFM_FILTER_DATA_TARGET_OUTPUT_U."dw_last_update_date",     "upd_job_instance_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."upd_job_instance_id",     "descr" = TFM_FILTER_DATA_TARGET_OUTPUT_U."descr",     "part_offset_flag" = TFM_FILTER_DATA_TARGET_OUTPUT_U."part_offset_flag",     "last_update_date" = TFM_FILTER_DATA_TARGET_OUTPUT_U."last_update_date",     "del_flag" = TFM_FILTER_DATA_TARGET_OUTPUT_U."del_flag",     "last_upd_cycle_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."last_upd_cycle_id",     "enable_flag" = TFM_FILTER_DATA_TARGET_OUTPUT_U."enable_flag",     "ss_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."ss_id"  from TFM_FILTER_DATA_TARGET_OUTPUT_U where TARGET_U."boq_rel_type_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."boq_rel_type_id"      and TARGET_U."to_version" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_version"     and TARGET_U."to_version" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_version"     and TARGET_U."to_pu_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_pu_id"     and TARGET_U."to_pu_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_pu_id"     and TARGET_U."to_contract_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_contract_id"     and TARGET_U."to_contract_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_contract_id"     and TARGET_U."to_boq_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_boq_id"     and TARGET_U."to_boq_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."to_boq_id"     and TARGET_U."from_version" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_version"     and TARGET_U."from_version" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_version"     and TARGET_U."from_pu_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_pu_id"     and TARGET_U."from_pu_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_pu_id"     and TARGET_U."from_contract_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_contract_id"     and TARGET_U."from_contract_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_contract_id"     and TARGET_U."from_boq_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_boq_id"     and TARGET_U."from_boq_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."from_boq_id"     and TARGET_U."boq_rel_type_id" = TFM_FILTER_DATA_TARGET_OUTPUT_U."boq_rel_type_id" ;
  2) 查询此query的topSQL信息的warning字段,发现SQL自诊断信息中有索引相关告警信息。
  3) 查询此query的topSQL信息(如下图),分析历史执行信息,发现id=20的CStore Index Scan算子的耗时为90796.980ms,SQL执行总时长137135.658ms。CStore Index Scan算子的耗时占比为 66%
  4) 找到原始SQL语句,对查询语句中出现的表dwimd.dwi_md_contract 进行hint,强制其走顺序扫描,避免走indexscan(全量语句见附件)
  5)对语句进行explain verbose,查看计划,发现计划符合预期(即表dwimd.dwi_md_contract走tablescan,对于列存表计划上显式为CStore Scan)
  6)对语句执行EXPLAIN ANALYZE操作(即实际执行语句),查看实际执行时间如下,发现SQL语句性能提升近10倍。全量的执行信息见附件
  附件:hint后的explain analyze 华为云博客_大数据博客_AI博客_云计算博客_开发者博客_技术博客-华为云附件:hint后的query 鍗庝负浜戝崥瀹 澶ф暟鎹 崥瀹 AI鍗氬 _浜戣 绠楀崥瀹 寮 鍙戣 呭崥瀹 鎶 鏈 崥瀹 -鍗庝负浜
  点击下方,第一时间了解华为云新鲜技术~
  华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云
  #华为云开发者联盟#

滑翔伞定点世界杯河南选手夺两冠打破尘封11年世界纪录河南日报客户端记者黄晖记者从河南省重竞技航空运动中心获悉,在近日于泰国举行的2023年滑翔伞世界杯定点赛泰国站比赛中,河南选手陈洋王建伟发挥出色,双双夺冠,向世界展示了中国航空体育服务升级焕新千兆时代,为数字生活添炫彩焕新千兆时代,为数字生活添炫彩广东电信千兆宽带服务全面升级数字广东建设正当时,数字化智能化浪潮奔涌而至!广东电信作为广东省内优质网络运营商,不断加大三千兆建设投入,一直坚持技术创新2023植树节图片大全动图,送你一棵许愿树,祝您美梦成真!植树节里要种树,不仅绿化护水土。可以种下橄榄树,与平互利好相处。可以种下常青树,象征友谊不干枯。可以种下摇钱树,金光大道通幸福。植树节,送你一棵许愿树,祝您美梦成真!植树节到了,树人民日报加强APP自动续费监管,让消费者开会员更放心你被手机APP自动续费过吗?据媒体报道,市面上不少APP都存在自动续费套路。在用户开通会员前,APP或是用免费试用会员一分钱体验x天会员等口号吸引眼球,或是压根不存在单独包月选项,中兴的2022年业绩报告告诉了我们什么?消费者业务崛起!近日,中兴通讯发布2022年业绩报告,报告中显示,中兴通讯2022年营收净利双增。其中相当值得关注的是,中兴在消费者业务方面,实现营业收入282。8亿元,同比有着不低的增长。回顾中地下污水处理厂的智能照明控制系统头条创作挑战赛摘要地下污水处理厂由于空间较大照明回路多,如果采用传统照明,不仅施工布线成本高,而且无法智能管理灯光。介绍了智能照明系统在某地下污水处理厂的应用,提出采用智能照明控制Canalys2022Q4个人智能音频设备领域下降26,2023年市场形势严峻根据Canalys发布的最新数据,2022年第四季度,全球个人智能音频设备市场经历26的大幅下降,跌至1。12亿部。本季度下跌受累于宏观经济状况下行,TWS出货量下降23,无线颈挂科大讯飞智能助听器评测2199元也有专业体验一前言科大讯飞切入AI健康赛道发布首款智能助听器产品在如今信息流爆炸的时代,视频音乐这些流媒体从来没有像现在这么轻易获取,几乎人人都离不开耳机,再加上长时间环境噪音的侵入,现代人都百度教育与视友科技联手打造兆麟中学人工智能示范校为落实国务院颁发的国务院关于印发新一代人工智能发展规划的通知,逐步发展国家智能教育工程,百度教育与视友科技联手打造黑龙江省哈尔滨市兆麟中学人工智能示范校,推动人工智能实验室在兆麟中散文我的老屋我的童年我的老屋我的童年苏翠丽我的老家在胶东的一个小山村。那里有我故土难离的年迈父母那是我魂牵梦萦的地方。上周我和先生一起回老家探望父母,人近半百,思乡的情愫越发浓厚,特别怀念逝去的时光和超20家上市公司集体回应硅谷银行存款占比普遍不到5颇受初创企业青睐的美国硅谷银行轰然倒闭,多家上市公司纷纷回应。3月12日至3月13日,对于美国风投型银行硅谷银行(SiliconValleyBank)倒闭一事,截至发稿,至少有23
广西女子因10岁女儿不听话,将女儿剃成光头,她最在意头发了作为父母来说,最费心费神的事就是小孩的培养和教育问题,许多孩子在年纪小的时候还相对听话,不过在孩子长大之后,就容易不听话并且我行我素。长辈们的育儿经验,不听话的孩子就应该棍棒伺候,君子渡口渡君子黄河渡君子渡口渡君子黄河渡如果说,黄河是一条巨龙,那么黄河沿岸的古渡口就是龙身上的鳞甲。渡口,作为连接两岸沟通不同族群的桥梁,是人们跨越大河的基石,可以说大河造就了渡口,渡口带活了大河。大兴善寺闹市里的一片宁静咚如果有机会,你最想认识谁?不空三藏法师中国佛教八大宗派一是禅宗二是净土宗,三是密宗又名真言宗,四是三论宗又名法性宗,五是法相宗又名瑜伽宗六是天台宗又名法华宗,七是华严宗又名贤首宗伞行摄回郴又去拍菜花花今天应朋友之约去五盖山,其实我还是想拍荷花。五盖山的气温(900米)与城区肯定相差至少一个数量级,那么花季可能会推迟二十天以上。虽然天气炎热,但我依然背着相机出门了。果然,山上的荷实地体验孟买火车站,上车能挤到你怀孕,印度人还以为中国也这样这绝对是你看过,最可怕的火车站,人们上车全靠跳车,车厢没有车门,掉下去你只能自己认栽,对于印度人来说,孟买是他们,最最最自豪的城市,自信是优点,但其实也是缺点,印度在国际社会上所获在路上的日子6月26号昨晚磨盘沟风很大,有大暴雨要来的节奏,充电时最担心下雨,弄我没睡好!早上醒来在沟里散了下步,没太多好看的。有些亲子项目都关停了,破旧不堪的。难怪昨夜只我留在沟里过夜的,其如果有2000块人民币,在泰国的话,能过有多潇洒?东南亚地区的国家这几年受到了众多小伙伴的青睐,其中泰国已经成为东南亚地区旅游行业的龙头。(此处已添加小程序,请到今日头条客户端查看)也许它不仅仅拥有优美的景色,而且当地的消费水平也白色的沙漠见过没?自然是一个伟大的艺术家,它的创造力总是让我们自叹弗如。在这位艺术家的妙手下,广袤无垠的大地时而色彩斑斓,摇曳生姿,时而肃穆纯净,摄人心魄,位于美国新墨西哥州的白色石膏结晶沙漠就是自妙湛寺始建于元代至元二十七年金刚塔金刚塔是妙湛寺建筑群的组成部分,妙湛寺包括了六殿三塔一戏台,文明阁由两庙一阁和赐书堂组成。妙湛寺始建于元代至元二十七年(1290AD),为官渡六大寺院之首。眼前的金刚塔是国家高温来袭,古城正定这些地方避暑纳凉绝对赞夏至将至,气温飙升若是不想长居空调房中度日那就让我们来古城寻一处悠然之地赴一场清心之旅吧Theancientcityofsummer走走走,我带你出门纳凉吹天然空调去那种舒适绝对是夏季吃姜,全年安康,生姜的这5种吃法你吃对了吗?夏季吃姜,全年安康,今年夏天你吃姜了吗?每年立夏到三伏,是吃姜的最佳时期。因为立夏到三伏是人体阳气最旺的时候,这个时候吃些姜,可以把身体内的寒湿气排出体外,比平时吃效果好上几倍。从