GaussDB(DWS)性能调优indexscan导致的性能
本文分享自华为云社区《GaussDB(DWS)性能调优:indexscan导致的性能问题识别与优化【玩转PB级数仓GaussDB(DWS)】云社区华为云》,作者:譡里个檔。
通常跑批加工场景下,都是大数量做关联操作,通常不建议使用索引。有些时候因为计划误判导致使用索引的可能会导致严重的性能问题。本文从一个典型的索引导致性能的场景重发,剖析此类问题的特征,定位方法和解决方法
1)在某局点POC测试时发现某SQL语句比较慢,原始SQL如下WITHetl1165837960703994644LOADABLEas(selectboqreltypeid,topuid,toversion,cycleid,partoffsetflag,toboqid,descr,fromcontractid,fromversion,frompuid,ssid,tocontractid,fromboqid,enableflag,lastupdatedatefrom(SELECTPARALLEL(4)BOQREL。FROMBOQID,BOQREL。TOBOQID,BOQREL。FROMPUID,BOQREL。TOPUID,BOQREL。PARTOFFSETFLAG,BOQREL。DESCR,BOQREL。SSID,BOQREL。CYCLEID,NVL(BOQREL。FROMVERSION,SNULL)FROMVERSION,NVL(BOQREL。TOVERSION,SNULL)TOVERSION,BOQREL。LASTUPDATEDATE,FROMCON。CONTRACTIDASFROMCONTRACTID,TOCON。CONTRACTIDASTOCONTRACTID,CLA。CLASSIDASBOQRELTYPEID,BOQREL。ENABLEFLAGFROM(SELECTA。FROMBOQID,A。TOBOQID,A。FROMPUID,A。TOPUID,A。FROMCONTRACTNUMBER,A。TOCONTRACTNUMBER,A。BOQRELTYPECODE,A。PARTOFFSETFLAG,A。DESCR,A。SSID,A。FROMVERSION,A。TOVERSION,A。LASTUPDATEDATE,A。CYCLEID,A。ENABLEFLAG,DECODE(A。SSID,2820,2600,A。SSID)SSIDTMP,ROWNUMBER()OVER(PARTITIONBYFROMBOQID,TOBOQID,FROMPUID,TOPUID,FROMCONTRACTNUMBER,TOCONTRACTNUMBER,BOQRELTYPECODE,FROMVERSION,TOVERSIONORDERBYDECODE(A。SSID,2820,1,2600,2,3))RNFROMLDBMDBOQRELA)BOQREL,(SELECTCONTRACTID,HWCONTRACTNUM,SSIDFROMDWIMDCONTRACTWHERECONTRACTIDISNOTNULLANDENDTIMETODATE(47121231,YYYYMMDD))FROMCON,(SELECTCONTRACTID,HWCONTRACTNUM,SSIDFROMDWIMDCONTRACTWHERECONTRACTIDISNOTNULLANDENDTIMETODATE(47121231,YYYYMMDD))TOCON,(SELECTCLASSID,CODE,CLASSTYPEID,SSIDFROMDWIMDCLASSWHERECLASSTYPEID193)CLAWHEREBOQREL。RN1ANDBOQREL。FROMCONTRACTNUMBERFROMCON。HWCONTRACTNUMANDBOQREL。SSIDFROMCON。SSIDANDBOQREL。TOCONTRACTNUMBERTOCON。HWCONTRACTNUMANDBOQREL。SSIDTOCON。SSIDANDBOQREL。BOQRELTYPECODECLA。CODEANDBOQREL。SSIDTMPCLA。SSID)t),BEFORETARGETas(selectfromcontractid,frompuid,ssid,fromboqid,fromversion,toversion,crtcycleid,topuid,toboqid,delflag,lastupdcycleid,lastupdatedate,descr,enableflag,crtjobinstanceid,dqimproveflag,updjobinstanceid,tocontractid,partoffsetflag,boqreltypeidfrom(SELECTPARALLEL(4)FROMBOQID,TOBOQID,FROMPUID,TOPUID,FROMCONTRACTID,TOCONTRACTID,BOQRELTYPEID,PARTOFFSETFLAG,DESCR,SSID,CRTCYCLEID,LASTUPDCYCLEID,DELFLAG,DQIMPROVEFLAG,CRTJOBINSTANCEID,UPDJOBINSTANCEID,NVL(FROMVERSION,SNULL)FROMVERSION,NVL(TOVERSION,SNULL)TOVERSION,LASTUPDATEDATE,ENABLEFLAGFROMDWIMDBOQREL)t),CDCas(selectLOADABLE。ssid,LOADABLE。fromversion,LOADABLE。fromboqid,LOADABLE。partoffsetflag,LOADABLE。frompuid,casewhenBEFORETARGET。BOQRELTYPEIDisnullandBEFORETARGET。FROMBOQIDisnullandBEFORETARGET。FROMCONTRACTIDisnullandBEFORETARGET。FROMPUIDisnullandBEFORETARGET。FROMVERSIONisnullandBEFORETARGET。TOBOQIDisnullandBEFORETARGET。TOCONTRACTIDisnullandBEFORETARGET。TOPUIDisnullandBEFORETARGET。TOVERSIONisnullthen1else3endaschangecode,LOADABLE。toversion,LOADABLE。boqreltypeid,LOADABLE。fromcontractid,LOADABLE。tocontractid,LOADABLE。descr,LOADABLE。lastupdatedate,LOADABLE。topuid,LOADABLE。enableflag,LOADABLE。cycleid,LOADABLE。toboqidfromLOADABLEleftjoinBEFORETARGETonLOADABLE。BOQRELTYPEIDBEFORETARGET。BOQRELTYPEIDandLOADABLE。FROMBOQIDBEFORETARGET。FROMBOQIDandLOADABLE。FROMCONTRACTIDBEFORETARGET。FROMCONTRACTIDandLOADABLE。FROMPUIDBEFORETARGET。FROMPUIDandLOADABLE。FROMVERSIONBEFORETARGET。FROMVERSIONandLOADABLE。TOBOQIDBEFORETARGET。TOBOQIDandLOADABLE。TOCONTRACTIDBEFORETARGET。TOCONTRACTIDandLOADABLE。TOPUIDBEFORETARGET。TOPUIDandLOADABLE。TOVERSIONBEFORETARGET。TOVERSION),TFMFILTERDATATARGETOUTPUTUas(selectCDC。topuid,CDC。boqreltypeid,CDC。ssid,CurrentTimestamp()asdwlastupdatedate,CDC。toversion,CDC。fromversion,20230104000000aslastupdcycleid,CDC。fromcontractid,CDC。lastupdatedate,CDC。descr,Nasdelflag,CDC。fromboqid,CDC。toboqid,CDC。enableflag,CDC。frompuid,1asupdjobinstanceid,Nasdqimproveflag,CDC。tocontractid,CDC。partoffsetflagfromCDCwhereCDC。changecode3)updateDWIMDBOQRELTARGETUsetdqimproveflagTFMFILTERDATATARGETOUTPUTU。dqimproveflag,dwlastupdatedateTFMFILTERDATATARGETOUTPUTU。dwlastupdatedate,updjobinstanceidTFMFILTERDATATARGETOUTPUTU。updjobinstanceid,descrTFMFILTERDATATARGETOUTPUTU。descr,partoffsetflagTFMFILTERDATATARGETOUTPUTU。partoffsetflag,lastupdatedateTFMFILTERDATATARGETOUTPUTU。lastupdatedate,delflagTFMFILTERDATATARGETOUTPUTU。delflag,lastupdcycleidTFMFILTERDATATARGETOUTPUTU。lastupdcycleid,enableflagTFMFILTERDATATARGETOUTPUTU。enableflag,ssidTFMFILTERDATATARGETOUTPUTU。ssidfromTFMFILTERDATATARGETOUTPUTUwhereTARGETU。boqreltypeidTFMFILTERDATATARGETOUTPUTU。boqreltypeidandTARGETU。toversionTFMFILTERDATATARGETOUTPUTU。toversionandTARGETU。toversionTFMFILTERDATATARGETOUTPUTU。toversionandTARGETU。topuidTFMFILTERDATATARGETOUTPUTU。topuidandTARGETU。topuidTFMFILTERDATATARGETOUTPUTU。topuidandTARGETU。tocontractidTFMFILTERDATATARGETOUTPUTU。tocontractidandTARGETU。tocontractidTFMFILTERDATATARGETOUTPUTU。tocontractidandTARGETU。toboqidTFMFILTERDATATARGETOUTPUTU。toboqidandTARGETU。toboqidTFMFILTERDATATARGETOUTPUTU。toboqidandTARGETU。fromversionTFMFILTERDATATARGETOUTPUTU。fromversionandTARGETU。fromversionTFMFILTERDATATARGETOUTPUTU。fromversionandTARGETU。frompuidTFMFILTERDATATARGETOUTPUTU。frompuidandTARGETU。frompuidTFMFILTERDATATARGETOUTPUTU。frompuidandTARGETU。fromcontractidTFMFILTERDATATARGETOUTPUTU。fromcontractidandTARGETU。fromcontractidTFMFILTERDATATARGETOUTPUTU。fromcontractidandTARGETU。fromboqidTFMFILTERDATATARGETOUTPUTU。fromboqidandTARGETU。fromboqidTFMFILTERDATATARGETOUTPUTU。fromboqidandTARGETU。boqreltypeidTFMFILTERDATATARGETOUTPUTU。boqreltypeid;
2)查询此query的topSQL信息的warning字段,发现SQL自诊断信息中有索引相关告警信息。
3)查询此query的topSQL信息(如下图),分析历史执行信息,发现id20的CStoreIndexScan算子的耗时为90796。980ms,SQL执行总时长137135。658ms。CStoreIndexScan算子的耗时占比为66
4)找到原始SQL语句,对查询语句中出现的表dwimd。dwimdcontract进行hint,强制其走顺序扫描,避免走indexscan(全量语句见附件)
5)对语句进行explainverbose,查看计划,发现计划符合预期(即表dwimd。dwimdcontract走tablescan,对于列存表计划上显式为CStoreScan)
6)对语句执行EXPLAINANALYZE操作(即实际执行语句),查看实际执行时间如下,发现SQL语句性能提升近10倍。全量的执行信息见附件
附件:hint后的explainanalyze华为云博客大数据博客AI博客云计算博客开发者博客技术博客华为云附件:hint后的query鍗庝负浜戝崥瀹澶暟鎹崥瀹AI鍗氬浜戣绠楀崥瀹寮鍙戣呭崥瀹鎶鏈崥瀹鍗庝负浜
点击下方,第一时间了解华为云新鲜技术
华为云博客大数据博客AI博客云计算博客开发者中心华为云
华为云开发者联盟
106113!东契奇伤退,欧文27分难救主,独行侠逆转未果不敌鹈鹕北京时间3月9日,NBA常规赛比赛继续进行。新奥尔良鹈鹕队坐镇主场,迎来了达拉斯独行侠队的挑战。鹈鹕队在第二节发力取得了两位数的优势,末节欧文带领独行侠队发力,一度追到只差3分。关
四大特点聚焦!第二届北方消费品博览会6月9日济南启幕3月9日,新黄河记者从济南市委市政府新闻发布会获悉,第二届北方消费品博览会(以下简称北方消博会)定于6月9日至11日在山东国际会展中心举办。去年6月举办的首届北方消博会,作为泉城购
赤壁路网通人心聚产业兴原来道路坑洼不平,现在修好了,通了便民公交,去城里可方便了。3月8日,赤壁市车埠镇鸡公山村一组村民许长英从村口坐上崭新的公交车,沿着黑色亮丽干净平整的沥青路,从该镇芙蓉村上赤壁旅游
浙江丽水市缙云县值得游玩的旅游景点有哪些?自驾游有什么攻略?缙云县,浙江省丽水市辖县,位于浙南腹地中南部丘陵山区,丽水东北部,缙云县东临仙居县,东南靠永嘉县,南连青田县,西接丽水市,西北界武义县,东北依磐安县,北与永康市毗邻。总面积1503
头条是我家,家有头条三陪我退休后,失去了同伴伙伴。每日在家,除开吃饭睡觉,都是捧着手机,看头条想头条学头条,头条是我生活的陪伴!在头条,我有成百上千的粉絲,关注,每天的评论,交流我消除了孤独,寂寞,我有了在
林江拆墙松绑让镇街担当中山融湾主力军中山大学岭南学院经济系教授林江。受访者供图跨越40余年的改革开放历程,小榄成为观察中山镇域经济发展的一面镜子。位居中山西北一隅,小榄曾凭借一镇之力将五金锁业等产业打造成了享誉全国的
女子称水果店买到双皮苹果具体情况是什么图片来源于网络近日,在广东广州有一位女士在网上发布了一段视频,称她在水果店买到了一种双皮的苹果,咨询网友是否有危害,可否正常食用。女子意外吃到双皮苹果,这位女士指出,之前她和孩子吃
四川小伙7年连续6次高考,只为当官替父报仇,后来怎样了?点赞关注接收新鲜有趣的历史故事!高考对于任何一个学子来说,都是改变自己人生的途径。很多学子都是在大学中经过深造,变成了更好的自己,毕业后成为了很多企业哄抢的对象。也就是因为大学的重
牛市起点已至!这3条线值得关注去年10月底以来,A股开启了一波震荡上行的大行情,上证指数从2885点涨至目前的3300多点,4个多月的时间里累计反弹超过400点,医药信创消费等板块都走出了不小的涨幅。然而在不少
驻马店市实验幼儿园被评为全国巾帼建功先进集体驻马店广电融媒体记者武帅通讯员李鹏飞在第113个三八国际妇女节来临之际,全国妇联发布关于表彰全国三八红旗手标兵全国三八红旗手全国三八红旗集体和全国巾帼文明岗全国巾帼建功标兵全国巾帼
万万没想到中国生育率全球倒数第五,这些年中国到底做了啥?有14亿人的口中国,生育率落跌到了球全倒数第五,生率育仅为1。175。意思就是100个育龄性女在2022年有只生出了1。175个娃出来,这计估是中新国立成以来育生率低最的刻时了。生