数据库程序员面试分类真题15.docx
数据库程序员面试分类真题15倚答题1. 执行计划里的access和filter有什么区别?正确答案:如下所示:PredicateInformation(identifiedbyop(江南博哥)erationid):4- access(*EMPNO"="B"."MGR")filter(*A*.*EMPNO*=*B*.*MGR*)5-filterB*.*MGR*ISNOTNU1.1.)一般而言,access表示这个谓词条件的值将会影响数据的访问路径(表还是索引):filter表示谓词条件的值不会影响数据的访问路径,只起到过滤的作用。NOTIN或VIN函数等容易产生filler操作。对于filter而言,如果只有一个子节点,那么就是简单过滤操作(独立操作)。如果有两个或更多子节点,那么就是类似WStCd1.ooPS操作,只不过与NeSted1.OoPS差别在于,filter内部会构建HASH表,对于重复匹配的,不会再次进行循环查找,而是利用已有结果,提高效率。但是一旦重复匹配的较少,循环次数多,那么,filter操作将严重影响性能的操作,可能会导致目标SQ1.几天都执行不完。考点SQ1.优化2. 统计信息包括哪几类?正确答案:Oracle数据库里的统计信息是一组存储在数据字典里,且从多个维度描述了数据库里对象的详细信息的一组数据。当OraCIe数据库工作在CBo(COStBasedOptimization,基于代价的优化器)模式下时,优化器会根据数据字典中记录的对象的统计信息来评估SQ1.语句的不同执行计划的成本,从而找到最优或者是相对最优的执行计划。所以,可以说,SQ1.语句的执行计划由统计信息来决定,若没有统计信息则会采取动态采样的方式来生成执行计划。统计信息决定着SQ1.的执行计划的正确性,属于SQ1.执行的指导思想。统计信息主要包括6种类型,其中表、列和索引的统计信息也可以统称为普通对象的统计信息,如下图所示。分炎髓睚三H懒硒懒懿字尴依目内蜀悔出¢2表列蚓帆W包括Ii(NI礼RoWS)、赧B1.OCKS).疗平均长H做RW1.1.EN)插蒯的i魄G小包助帆T的敦R(NuM_DISBNCThNUU侦的S(NIA1.NU1.1.S)./(JffiMSToGRAM,"遭括分植的晦雷就(就旅)、姒,姆,傩、r,期娥计G(httndcdSUBtiQ)雕用脚悻做I幽网0(1.EAF.B1.OCKS).费切(BIBrE1.).样”的个收lDisnctKeys).矍f<Cbsu11Fm)髓Orxk醐福命擀眼务酬系较瞰儿找哪目标骷牌网务招CpU的主氨电块蝴平眦翻帆练速解懒费胸脚娘块懈麹的福块的阴魁,上期CPt和10这丙械好丁麟,嬲于座相历Orxk犯蜥规城Jl明61陋澈务密的实k½WjSWOndeftm里稣字婚表(HTABS.NDS初、取脚N我上的重引,以及这哪群M表胡邮崎&榭掇髀H表WKHI的魁髓表、«91.列的密佛儆有本所区解融Oate巡Wlft-*(知XSM表)的陶(温它橄Q画解版计自三赎虬/过K表块的如力0.阳力XS系琳实际快既曲皎义的内存辅,并不占用实斥的帆存蒯可ft字ADBA,TAB1.ESDR.1.B.Co1.SeeDBAJDEXK系薨我WS.AUX_STAES,也可以任用DBMS.STATS.GET_SYSTEM.STATS蟠缴计召购解和腰牌棚SYSjAB_STAISSR方法»:DBMS.STAISG三三TAB1.ESIATS(USEIvreNAME,CASCADe»>TRUE);阿痈表聊t区进欣籁确强;DBMS.STATSGffliERTAB1.ESTATStUSEKTBNAMEiPARfNAME=>TJkrAS,GRANU1.三V=>WKlT110y,CASCAbE=>W蚓e三fDBMS_STArSMKrjniWliSERJMJENAMEl;EXECDBNB-STATSGfflER.SYsTCMST欣n,:船麟斤郑桐ExecdbxkstaisgwjerSYSTB1.ST加,螂)或iEXECDBMS_SMR_GTHER_SYSTEMSTATGA11三NGMODEOlXTERW1.NIRmM)-三RW1.为邮SM长,I助州全股矩DBMSStatsgatheR.D)CnONARY疝DBMS.STATS.GATHERTAB1.E.SlTS颈媒DBMSSTATS.GATHER.FlXEDOeJECTSSWS例依:DBMS_STArSGXrHERTABlf_STArS"dBmsStxtsdeletetableSTA耶HVTBNAME)DBmsstaideleteindexSMlS(USERjNDXNAMEIH弓!修改:DBMS_STATSSCTSysiblstar1:DBMS_STANDE1.ETzSYSTB1.sTANDBMSSlXNDfl三DICnCNARY.STAIS网$_STATS.DE1.ETEFIXEDOJECIS,STS考点统计信息3. OracleIOg和Ilg的自动统计信息收集机制有哪些不同?正确答案:在OraCleIOg之前并没有自动收集统计信息的机制,从OraCIeIOg开始引入了自动收集统计信息的功能,这个功能在OraCle】0g中被称为自动统计信息收集(AUtomatiCStatisticsGathering),在OraCIeIIg中被称为自动优化器统计信息收集(AUtomatiCOptimizerStatisticsCollection)t.自动统计信息收集作业能够每天收集普通对象和数据字典的统计信息,但不会收集乂$系列表的内部对象统计信息。Oracle的初始化参数STTISTCSJ.EVEl.控制收集统计信息的级别,有三个参数值:1)BASIC:收集基本的统计信息。2)TYPICA1.:收集大部分统计信息(数据库的默认设置).3)A1.1.:收集全部统计信息。当使用OracleFl动收集统计信息时,必须要确保OraCle的参数STAT1ST1CS_1.EVE1.的值为TYPICA1.或者A1.1.。默认值为TYPICA1.,该值可以确保数据库自我管理功能所需求的所有主要统计信息的正确收集,及提供最好的综合性能。这个默认值能胜任大多数的环境,并且OraCIe不推荐去修改该值。DBA可以根据Oracle提供的脚本$0RAC1.EJoMErdbmsadmin/CalmWin.sq查看统计信息收集作业的整体搭建流程。有兴趣的读者可以研究下此脚本的内容。OracleIOg和IIg的自动统计信息收集机制有所不同,详见下表。mOwleIlg中的自燃加收箝业联自动运疗任务GATHERSgPROG亲魏,¥次竦酬候鞋先生成名为ORASA1.OSgTlXxX的作也断瞰惚州妹的徽财驰,财.她£研DeMSSTANGATHERDXrABASESraS>0JOBJROC,哦序斯朝DeMvUTOJASjMMH)IATEGm风0P11112ER-SATS料做政iH1JJOB关腼令可疑护冒口有再个.Whkmgiotndow利WEEXENiWNXW,H同为DWIm0期第二瓶晟6苴,艘8例2)所有的麻喇跚摊天政(ffiitw,三三6.)OlXk撤拥我用Wl如能城液林独髓林Caid(Il中怕就懒ft臬判却何以现辨股级娴 ExecdbmsSCHEDllEilESAB邸YSiGmERS1JOBtA1.TER"疝SET”OPTIMIZERAUTOSTArSjoB"卡位SCoPE=SPF execdBmsSchediierdisablecsys.GmIER_飒颂 A1.THS'STENfSETIoPTMZERAUT0SW.J0e,<A1.SESCOPE=SPFilE;SaECrDBtAB1.EDFRoMDBASCHEDU1.ERJOeSDWIERfJOBNAME=UflSTXRJOB;OracIelOgOnclcllgJOB标GAT三STATS.X)Bautocimusuecol)cdkD则DBMSSWTS.GXniERDATABASES三JOBPROCftOxkIOg中.Oafc花出库Ei醺於Iir-M5¾GA1三.STATS.J0e的稿任条肝日刷僚CK)扁温诚JoB硼林版展DBMS_$膝GMHER-DATABASE-STgJoB_PROC”就邮标岷维计晶蕨(MiSEsots)m(SbdcStffitia)fliJI.甑艇怫吊刑斶怖嬲谈蟆MW是骏慢SiMfftWWfifflR的13慨会自湫彘翻变史仔也可灿谶KDBATABMODmCATKWS三i自动箍护窗口增加到7个:MONDAY.WNXW.71.ISDAY.WINDOW.WEDNBDAY-WKDOW'THURSDAY_wINDoW,FRlmYWINDOW.SAnJRDAYwlND0W,SUND.AYWINDOW.帆'D轴工作EHmn)三二礴2点,殿W时2)钟航许6点期出隈2点,用Iit午6。期MU内招时撇20何时牡H)期娠2瓦iiWO三三.瞥析聚融系斓来更烟幽所以,有辍自就府的栅帽摘腕.这像既油帼渊淞,触三三=,M5,瓶】融叔外榔耽毗顺】和做髅1。忖EXECDBMS,AVTOTASKADMDiBiAB1.EO; EXECDBMS_AUTO_TASk_AD(IN.ENAB1.E(diaii_OTC=>toqxinw<tascoltaio11'iopflw=>NUll,wii)jo«rume*>Nll1.); EXECDSMS_AuTOjAS“DMNDBAB1.EO; EXECDBMIAUT6j就ADMINDlSABIWJ三=>'actoq>ti三tscolfcctxn,j)perajcn>Nll1.wiown三ne=>NUm一SE1.ECTOJEKrKME,STATUSFROMDBA_AiTOUSK_CUENTWHERECUE-NA<E'attcc<三zcrSSSCoIlaSo11'SE1.ECT三DOWNAMETOCHAR(WN)OWNEXTIMIYYYY-MM-DDHH24iHSS)OPTIMIZERST<-AA.AurOTAsK_丽3FKOMBBA_AUroTASK-WindotlcuentsaaORDERBY。NDOW忘1."11ME;一SE1.ECrjRDlOGID.JRDJobHaneNJOB.C1.ASS,TO.CHAR(JRDAC11JA1.START,DAE,YYT-MM-DDIIH24:M1:SSACTUA1.STARTDATE.TOCHAR(JRD.10GD,YYYY-MM-DDHH24:M1:SS31.OGDATE,JRDSTARJS,tonCDDnffi在OraCIeIlg中对统计信息自动收集的功能进行了加强。在OraCIeIOg中,如果表中变更的行数(字典表SYS.M0N_M0DS_A1.1.$中记录的INSERT+UPDATE+DE1.ETE的总数)超过表的点行数7sYS.TABS中记录的目标表总记录数)的10%时或自上次自动统计信息收集作业完成之后目标表被执行过TRUNCATE操作,那么OraCle就会在指定时间段自动收集统计信息。在OraCleIog中,这个10%(STA1.EPERCENT)是无法修改的,如果表非常大,那么10