已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BOCN数据仓库ETL性能分析与调整方法,前言,随着数据仓库基础数据和应用的不断增加,数据仓库的性能问题日益突出。目前超过1小时的作业有2个30分钟到1小时的作业有10个10分钟到30分钟的作业有48个因此对数据仓库进行性能优化的需求越来越迫切,作业时长分析,共有12个作业运行时间在30分钟以上,共有48个作业运行时间为10分钟到30分钟,月末超长作业列表,月末跑批:,ETL脚本性能问题与原因分析,业务规则理解数据访问路径选取的合理性SQL策略与算法Multi-Statement实现并行InsertSelect比对算法不标准加载策略不优-大数据量Update、向非空表进行Insert一个任务内多脚本,过多的数据库录入/录出ACRM中居多模型优化PPI和PI的选择对小表或代码表的部分字段进行CollectStatistics,优化sql的执行路径实际并发运行环境的影响,DuplicateRows,RowDistributionUsingaUPICase1,RowDistributionUsingaNUPICase2,RowDistributionUsingaHighlyNon-UniquePrimaryIndex(NUPI)Case3,JoinRedistribution,JoinRedistribution(cont.),DuplicatingaTableinSpool,MergeJoin,ProductJoin,脚本SQL案例分析1业务规则理解,以CAS的CLAT任务脚本为例其中,统计每个帐户的最近的交易日期,通过金融传票的明细进行汇总groupby取得(效率较低);SELECTAcct_Num,max(Tx_Dt)FROMCAS.V_FINANCE_EVENTWHEREsubstring(acct_numfrom19for3)IN(209,229)GROUPBY1;实际可以从T_P_LOAN_CONTRACT中last_tx_dt字段得到脚本调整后,运行时间16mins53secsVS.2mins*脚本开发人员应提高对数据模型的理解,加强与设计人员的沟通,脚本SQL案例分析2并行Insert,修改前:insertintoAselect*fromB;insertintoAselect*fromC;修改后:insertintoAselect*fromB;insertintoAselect*fromc;*并行插入空表不记录TransactionJournal*充分利用Teradata向空表Insert较快以及并行操作的特性,脚本SQL案例分析3Delete/Insert,以T03_AGMT_RELA_H(20726301)任务脚本为例在脚本中delete表中大部分记录,然后进行插入DELETEFROMPDATA.T03_AGMT_RELA_H/*修改删除条件,将删除条件改为主键*/WHERE()IN(SELECTFROMPWORK.VT_T03_AGMT_RELA_H_curWHEREAgmt_Rela_Type_CdNOTIN(01,02,03,04,05,06,07,08,09,17,61,62,63,64,65,66,67,68);INSERTINTOPDATA.T03_AGMT_RELA_H*Deletecompleted.11169050rowsremoved.*Totalelapsedtimewas59minutesand45seconds.*Insertcompleted.11185846rowsadded.,脚本SQL案例分析3Delete/Insert,调整SQL策略先将需要保留的数据插入临时表清空目标表通过Multi-Statement对目标表进行并行insertselect操作*利用Teradata空表insert操作与并行的特性*避免大数据量的delete,update操作,脚本SQL案例分析4避免大表字段转换,在WHERE条件的运算操作中,会出现对大表的字段进行类型转换或者其他处理,然后与小表字段或常量进行等值或比较操作以SGR的T_P_PRE_LOAN_RET_CARD为例WHEREpre_loan_card_acct=b.tmp_Acct_NumANDCAST(SUBSTR(statis_dt,1,4)|SUBSTR(statis_dt,6,2)|SUBSTR(statis_dt,9,2)ASchar(8)=20051025;-WHEREpre_loan_card_acct=b.tmp_Acct_NumANDstatis_dt=CAST(2005-10-25ASDATEformatYYYY-MM-DD)或WHEREpre_loan_card_acct=b.tmp_Acct_NumANDstatis_dt=2005-10-25,脚本SQL案例分析5分析SQL的执行路径,通过执行explainselect.fromaleftjoinbona观察Teradata优化器的所生成的执行路径是否合理SQL执行路径中应避免大表的在所有AMP重新分布小表应尽量在AMP上重新分布或者在所有AMP上复制通过以下技术手段可以引导优化器生成正确而合理的执行路径SQL本身写法的检查,Join条件是否正确,避免大表间的笛卡尔乘积相关表物理模型设计是否合理,PI的选择等对小表的索引字段以及在表关联join时多次出现的条件字段收集统计信息CollectStatistics以T03的T03_CARD_ACCT_BAL_COMPO_H为例,脚本SQL案例分析5分析SQL的执行路径Cont.,多表joinFROMSDATA_FULL.S01_TGEN042T1LEFTJOINPDATA.T99_STD_CDE_MAP_INFOT2ONT2.SrcTab_Cd=S01_HARDCODE/*源表名*/ANDT2.Cde_Type=CURRENT_CAL_INT/*代码类型*/ANDT1.CTD_INT_BLG_CDE=T2.SrcCde_Cd/*主表与映射表关联条件*/LEFTJOINPDATA.T99_STD_CDE_MAP_INFOT3ONT3.SrcTab_Cd=S01_TGEN015/*源表名*/ANDT3.Cde_Type=CURRENCY/*代码类型*/ANDT1.CRY_CDE=T3.SrcCde_Cd/*主表与映射表关联条件*/LEFTJOINPDATA.T99_STD_CDE_MAP_INFOT4ONT4.SrcTab_Cd=S01_TGEN066/*源表名*/ANDT4.Cde_Type=CRDCARD_BAL_COMPONENT/*代码类型*/ANDT1.BCT_IDN_CDE=T4.SrcCde_Cd/*主表与映射表关联条件*/;通过执行Explain可以观察该SQL的执行路径,如下,脚本SQL案例分析5分析SQL的执行路径Cont.,3)Wedoasingle-AMPRETRIEVEstepfromPDATA.T4bywayoftheprimaryindexPDATA.T4.Cde_Type=CRDCARD_BAL_COMPONENTwitharesidualconditionof(PDATA.T4.SrcTab_Cd=S01_TGEN066)AND(PDATA.T4.Cde_Type=CRDCARD_BAL_COMPONENT)intoSpool2(all_amps),whichisduplicatedonallAMPs.ThesizeofSpool2isestimatedwithhighconfidencetobe684rows.Theestimatedtimeforthisstepis0.00seconds.4)Weexecutethefollowingstepsinparallel.1)Wedoanall-AMPsJOINstepfromSDATA_FULL.T1bywayofanall-rowsscanwithnoresidualconditions,whichisjoinedtoSpool2(LastUse)bywayofanall-rowsscan.SDATA_FULL.T1andSpool2areleftouterjoinedusingaproductjoin,withajoinconditionof(SDATA_FULL.T1.BCT_IDN_CDE=SrcCde_Cd).TheinputtableSDATA_FULL.T1willnotbecachedinmemory.TheresultgoesintoSpool3(all_amps),whichisredistributedbyhashcodetoallAMPs.Theresultspoolfilewillnotbecachedinmemory.ThesizeofSpool3isestimatedwithnoconfidencetobe54,801,029rows.Theestimatedtimeforthisstepis30.76seconds.2)Wedoasingle-AMPRETRIEVEstepfromPDATA.T3bywayoftheprimaryindexPDATA.T3.Cde_Type=CURRENCYwitharesidualconditionof(PDATA.T3.SrcTab_Cd=S01_TGEN015)AND(PDATA.T3.Cde_Type=CURRENCY)intoSpool4(all_amps),whichisredistributedbyhashcodetoallAMPs.ThesizeofSpool4isestimatedwithhighconfidencetobe146rows.Theestimatedtimeforthisstepis0.00seconds.,脚本SQL案例分析5分析SQL的执行路径Cont.,COLLECTSTATSUSINGSAMPLEONSDATA_FULL.S01_TGEN042COLUMN(BCT_IDN_CDE);COLLECTSTATSUSINGSAMPLEONSDATA_FULL.S01_TGEN042COLUMN(CRY_CDE);,脚本SQL案例分析5分析SQL的执行路径Cont.,3)Weexecutethefollowingstepsinparallel.1)Wedoasingle-AMPRETRIEVEstepfromPDATA.T4bywayoftheprimaryindexPDATA.T4.Cde_Type=CRDCARD_BAL_COMPONENTwitharesidualconditionof(PDATA.T4.SrcTab_Cd=S01_TGEN066)AND(PDATA.T4.Cde_Type=CRDCARD_BAL_COMPONENT)intoSpool2(all_amps),whichisduplicatedonallAMPs.ThesizeofSpool2isestimatedwithhighconfidencetobe684rows.Theestimatedtimeforthisstepis0.00seconds.2)Wedoasingle-AMPRETRIEVEstepfromPDATA.T3bywayoftheprimaryindexPDATA.T3.Cde_Type=CURRENCYwitharesidualconditionof(PDATA.T3.SrcTab_Cd=S01_TGEN015)AND(PDATA.T3.Cde_Type=CURRENCY)intoSpool3(all_amps),whichisduplicatedonallAMPs.ThenwedoaSORTtoorderSpool3byrowhash.ThesizeofSpool3isestimatedwithhighconfidencetobe16,644rows.Theestimatedtimeforthisstepis0.04seconds.,脚本SQL案例分析5分析SQL的执行路径Cont.,4)Wedoanall-AMPsJOINstepfromSDATA_FULL.T1bywayofanall-rowsscanwithnoresidualconditions,whichisjoinedtoSpool2(LastUse)bywayofanall-rowsscan.SDATA_FULL.T1andSpool2areleftouterjoinedusingaproductjoin,withajoinconditionof(SDATA_FULL.T1.BCT_IDN_CDE=SrcCde_Cd).TheinputtableSDATA_FULL.T1willnotbecachedinmemory.TheresultgoesintoSpool4(all_amps),whichisbuiltlocallyontheAMPs.ThenwedoaSORTtoorderSpool4byrowhash.Theresultspoolfilewillnotbecachedinmemory.ThesizeofSpool4isestimatedwithlowconfidencetobe54,722,052rows.Theestimatedtimeforthisstepis45.95seconds.,脚本SQL案例分析5分析SQL的执行路径Cont.,优化后,性能显著提高,脚本SQL案例分析6物理表的设计,DELETEFROMPDATA.T03_AGMT_PTY_RELA_H/*修改删除条件,将删除条件改为主键*/WHERE(Agmt_Id/*协议号*/,Agmt_Mdfr/*协议修饰符*/,Agmt_Pty_Rela_Type_Cd/*协议当事人关系类型代码*/)IN(SELECTAgmt_Id/*协议号*/,Agmt_Mdfr/*协议修饰符*/,Agmt_Pty_Rela_Type_Cd/*协议当事人关系类型代码*/FROMPWORK.VT_T03_AGMT_PTY_RELA_H_cur2)Insert*Deletecompleted.29728007rowsremoved.*Totalelapsedtimewas10minutesand40seconds.*Insertcompleted.29814092rowsadded.,脚本SQL案例分析6物理表的设计,CREATEMULTISETTABLET03_AGMT_PTY_RELA_H,NOFALLBACK,NOBEFOREJOURNAL,NOAFTERJOURNAL,CHECKSUM=DEFAULT(Party_IdCHAR(19)CHARACTERSETLATINCASESPECIFICTITLE当事人编号NOTNULL,Agmt_IdCHAR(21)CHARACTERSETLATINCASESPECIFICTITLE协议号NOTNULL,Agmt_MdfrVARCHAR(18)CHARACTERSETLATINCASESPECIFICTITLE协议修饰符NOTNULL,Agmt_Pty_Rela_Type_CdCHAR(2)CHARACTERSETLATINCASESPECIFICTITLE协议当事人关系类型代码NOTNULL,St_DtDATEFORMATYYYYMMDDTITLE开始日期NOTNULLDEFAULTDATE1900-01-01,End_DtDATEFORMATYYYYMMDDTITLE结束日期NOTNULLDEFAULTDATE3000-12-31)PRIMARYINDEXXIE1T03_AGMT_PTY_RELA_H(Agmt_Id)PARTITIONBYRANGE_N(CAST(Agmt_Pty_Rela_Type_Cd)ASINTEGER)BETWEEN1AND100EACH1,NORANGEORUNKNOWN);COLLECTSTATSONT03_AGMT_PTY_RELA_HCOLUMNPARTITION;,脚本SQL案例分析6物理表的设计,DELETEFROMPDATA.T03_AGMT_PTY_RELA_H/*修改删除条件,将删除条件改为主键*/WHERE(Agmt_Id/*协议号*/,Agmt_Mdfr/*协议修饰符*/,Agmt_Pty_Rela_Type_Cd/*协议当事人关系类型代码*/)IN(SELECTAgmt_Id/*协议号*/,Agmt_Mdfr/*协议修饰符*/,Agmt_Pty_Rela_Type_Cd/*协议当事人关系类型代码*/FROMPWORK.VT_T03_AGMT_PTY_RELA_H_cur2)ANDAgmt_Pty_Rela_Type_CdIN(14,15,81,18,19,84,85,16)取特定的协议类型Insert,脚本SQL案例分析6物理表的设计,3)Wedoanall-AMPsDELETEfrom8partitionsoftest.T03_AGMT_PTY_RELA_Hwithaconditionof(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=14)OR(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=15)OR(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=81)OR(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=18)OR(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=19)OR(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=84)OR(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=85)OR(test.T03_AGMT_PTY_RELA_H.Agmt_Pty_Rela_Type_Cd=16).,脚本SQL案例分析6减少IO操作,INSERTINTOPWORK.VT_T03_AGMT_PTY_RELA_H_RT_cur(。)SELECTA1.CI_NO/*客户号*/,A1.AC/*账号*/,/*设置为*/,11/*协议当事人关系类型代码:11-持有的核心帐户*/,A2.OPEN_ACCT_DTASopen_date/*开户日期*/,CASEWHENA2.agmt_Stat_cdA2THEN30001231ELSE20071223ENDASClose_Dt/*销户日期*/FROMSDATA_FULL.S02_CITACRPA1INNERJOINPDATA.T03_AGREEMENT_RTA2ONA1.AC=A2.Agmt_Id;INSERTINTOPWORK.VT_T03_AGMT_PTY_RELA_H_RT_cur(。)SELECTCOALESCE(A1.RGN_CODE|A1.CINO,)ASParty_Id/*地区或分行号|客户编号*/,COALESCE(A1.AC,)ASAC/*账号*/,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级语文阶段性考试真题汇编
- 贵州国企招聘2025贵州金沙供销集团有限公司人才引进笔试历年备考题库附带答案详解试卷2套
- 浙江国企招聘截止9月9日可笔试历年典型考点题库附带答案详解试卷2套
- 浙江国企招聘2025杭州萧山水务有限公司招聘40人笔试历年常考点试题专练附带答案详解试卷2套
- 2025陕西建安工程监理有限公司招聘笔试历年常考点试题专练附带答案详解试卷2套
- 2025重庆石柱县县属国有企业考核招聘11人笔试历年难易错考点试卷带答案解析试卷2套
- 2025贵州黔东南州岑巩县浩达粮油购销有限责任公司招聘2人笔试历年备考题库附带答案详解试卷2套
- 公园管理服务提升及游客满意度调研
- 学生“双减”政策实施调查问卷
- 计算机网络及Python知识测试卷含答案
- 心理咨询公司投标方案
- 中风的护理要点
- 医院护理质量标准化管理体系
- 粮食仓储设施提升改造项目可行性研究报告
- 公立医院改革政策解读
- 一模初三质量分析
- 工程监理进度控制的实施方案
- 交通事故案件追加被告申请书
- 面包烘焙设备的维护与检修管理
- 2025年无锡市市属国有企业招聘笔试备考题库(带答案详解)
- 蒲公英劳技课课件
评论
0/150
提交评论