欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    数据库程序员面试分类真题15.docx

    • 资源ID:1416033       资源大小:102.93KB        全文页数:26页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库程序员面试分类真题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%其实是非常多的数据,这就造成统计信息不准确。在OraCIeIIg中,这个o%(Stalilpercent)是可以修改的,分为全局(DBMS-STTS.SET_G1.0BAjPREFS)、数据库级别(DBMS_STATS.SET_DATABASE_PREFS)、用户级别(DBMS_STATS.SET_SCHEMA_PREFS)和表级别(DBMS_STATS.SET_TABu1.PREFS)。其中,数血库级别和用户级别都是调用表级别的存储过程DBMS_STATS.SET,ABu1.PREFS来对表进行设置的。表级别的设定如下:1)修改为5改范围为l100):EXECDBMS_STATS.SETjrAB1.E_PREFS(USER,'TI1.NAME',''STA1.I-PERCENT,5);2)恢复为10%:EXECDBMSSTATS.SETTAB1.EPREFS(USER,TBNAME',STA1.EPERCENT*,NU1.1.);3)查询表百分比:SE1.ECTDBMS-STTS.GET'REFS('STA1.E_PERCET,USER/TB_NAME')FROMDUA1.;4)查询全高百分比:SE1.ECTDBMS_STATS.GET_PREFS(,STA1.E-PERCENT,)EKOMDUA1.:OracleIOg的自动统计信息收集功能没有资源限制,但OraCleUg的统计信息收集功能在资源管理上面限制了对系统资源使用,其对应的RESOURCE_P1.AN的名称为DEEAU1.TJIAlNTENANCE-P1.ANe用户可以根据各自系统的业务场泉来配置是否开启自动收集统评信息,也可以调整窗口调度的开始时间、持续时间和资源组限制等。DBA_TAB_MODIFICATIONS视图(基表为SYS.MON_MODS_A1.1.$)记录了从上次收集统计后息以来表中DV1.操作变化的数据量,包括执行ISERT、UPDATE和DE1.ETE影响的行数,以及是否执行过TRUCATE操作。该特性依赖于表的MONITORING属性是否打开,可以查询DBATAB1.ES视图的MONITORING列获取该属性值。另外,DBMS_STATS.F1.USH_DATABASE_MONITORING_INFO可以将内存中的数据快速刷新到数据亳典SYS.M0N_M0DS_A1.1.$o考点统计信息4. 怎样收集表的统计信息?怎样收集分区表的统计信息?正确答案:主要采用DBVS_stats.gather_table_stats包进行统计信息的收集,如下:DBMSSTATS.GATHERTAB1.ESTATS(USER,TBNAME*,CASCADE=>TRUE)普通表DBMS_STATS.GATHER_TAB1.E_STATS(USER,TB.NAME,PARTNAME=>'PT_PART_NAME',GRANU1.ARITY=>>PARTITION*,CASCADE=>TRUE);一针对分区表的单个各区进行收集统计信息除此之外,还有一些其他的用法,如卜丁DEXECDBMSSTATS.GATHERDATABASESTATS(USER);收集当前数据库下所有用户的统计信息。2)EXECDBMS_STATS.GATHER_SCHEMA_STATS(USER):收集当前数据库用户下所有对象的林计信息。当系统的分区表数据量很大时,如果每次都收集全部的分区必然会导致统计信息的收集非常慢,在OraCleIlg之后可以通过设置INCREMENTA1.来只针对数据有变动的分区做收集:EXECDBMS_STATS.SET_TAB1.E_PREFS(USER,TAB1.E_NAME',INCREMENTA1.*,TRUE*);-只收集数据变的的分区SE1.ECTDBMSSTATS.GETPREFS(,INCREMENTA1.*,NU1.1.,TAB1.ENME,)FROMDUA1.;一查看分区表INCREVETA1.的值考点统计信息5. 什么是动态采样(DynamiCSampling)?正确答案:时于没有收集统计信息的表,OraCIe为了能够得到相对准确的执行计划,会在执行SQ1.之前对SQ1.语句涉及的衣做动态采样(DynamicSampling,从OraclellgR2开始称为DynamiCStatistic)<.有两种方法可以开启动态采样:1)将参数OPTlVIZEkDYNAMIJSAMP1.NG的值设为大于或等于1,从OracleIog开始,该值默认为2,若设置为0,则禁用动态采样。2)使用动态采样的Hint:DYNAMICSAMP1.ING(T1.EVE1.)该Hint表示对目标表T强制使用等级为参数Ievel指定值的动态采样。默认采样数据块数量受隐含参数“OPTlMIZERDYNSMPB1.KS”的控制,其默认值是32,表示动态采样时默认采样数据块数量为32考点统计信息6. 动态采样的作用有哪几个方面?正确答案:引入动态采样有如下几方面的作用:I)CBO依赖的是充分的统计信息,但是并不是每个用户都会非常认真、及时地去对每个表做分析。为了保证执行计划都尽可能地准确,Oracle需要使用动态采样技术来帮助CBO获取尽可能多的信息。2)全局临时表。通常来讲,临时表的数据是不做分析的,但是当一个查询关联到这样的临时表时,CBO要想获得临时表上的统计信息分析数据,就只能依赖于动态采样了。3)为了相对准确地估算出当目标SQ1.语句WHERE条件中出现有关联关系的列时整个WHERE条件的组合可选择率,进而能相对准确地估算出返回结果集的Cardinality%动态采样除了可以在段对象没有分析时,给CBO提供分析数据之外,还可以对不同列之间的相关性做统计。考点统计信息7. 直方图(HiStogram)的意义是什么?直方图的适用场合有哪些?正确答案:在Oracle数据库中,CBO会默认认为H标列的数据在其最小值(IQWA1.UE)和最大值(HIGI1.VA1.UE)之间是均匀分布的,并且会按照这个均匀分布原则来计和对目标列施加WHERE查询条件后的可选择率以及结果集的CardinaIiIy,进而据此来计算成本值并选择执行计划。但目标列的数据是均匀分布这个原则并不总是正确的,在实际的系统中,可以很容易地发现有一些目标列的数据分布是不均匀的,甚至是极度倾斜、分布极度不均衡的。对这样的列如果还按照均匀分布的原则去计算可选择率与CardinaIity,并据此来计算成木、选择执行计划,那么CBo所选择的执行计划就可能是不合理的,甚至是错误的,所以此时应该收集列的直方图。直方图是-种列的特殊的统计信息,主要用来描述列上的数据分布情况。当数据分布倾斜时,直方图可以有效地提升Cardinality评估的准确度。构造直方图最主要的原因就是帮助优化器在式中数据严重偏斜时做出更好的规划。例如,表中的某个列上,其中的某个值占据了数据行的80<(数据分布倾斜),相关的索引就可能无法帮助减少满足查询所需的I/O数量。创建直方图可以让基于成本的优化器知道何时使用索引才最合适,或何时应该根据WHERE子句中的值返回表中80%的记录。如果对目标列收集了直方图,那么意味着CBO将不再认为该目标列上的数据是均匀分布的了,CBO就会用该目标列上的直方图统计信息来计算对该列施加查询条件后的可选择率和返回结果集的Cardinality,进而据此计算成本并选择相应的执行计划。通常情况下在以下场合中建议使用宜方图:1)当WHERE/句引用/列值分布存在明显偏差的列时:当这种偏差相当明显时,以至于WHEREr句中的值将会使优化器选择不同的执行计划,这时应该使用直方图来帮助优化器来修正执行路径。(注意:若查询不引用该列,则在该列上创建直方图没有意义。)2)当列值导致不正确的判断时,这种情况通常会发生在多表连接时。例如,假设有一个五张表的连接操作,其目标SQ1.最终结果集只有10行。OraeIe将会以一种使第一个连接的结果集(集合基数)尽可能小的方式将表连接起来。通过在中间结果集中携带更少的负载,查询将会运行得更快。为了使中间结果最小化,优化器尝试在SQ1.执行的分析阶段评估每个结果集的集合基数。在偏差的列上拥有直方图将会极大地帮助优化器做出正确的决策。如优化器对中间结果集的大小做出不正确的判断,则它可能会选择一种未达到最优化的表连接方法。因此向该列添加直方图经常会向优化器提供使用最佳连接方法所需的信息。考点统计信息8. 直方图存储的数据字典表有哪些?正确答窠:直方图实际上存储在数据字典基表ss.Histgrms中,可以通过数据字典DBA_TAB_HISTOGRAMS.DB/_PART_HIST0GRMS和DBASUBPART_HISTOGRAMS来分别看看袤、分区表的分区和分区表的子分区的直方图统计信点。考点统计信息9. 直方图有哪些类型?正确答案:OraCle数据库里的直方图使用了一种称为BUCket(桶)的方式来描述目标列的数据分布。BUCket(桶)是一个逻辑上的概念,相当于分组,每个BUCket就是一组,每个BUCket里会存储个或多个目标列中的数据。OraCle会用两个维度来描述一个BUCket,这两个维度分别是ENDPOINNUMBER和ENDPOIM1.VA1.UE,Oracle会将每个Bucket的这两个维度记录在数据字典基表SYS.H1STGRM$中。列的直方图的类型可以通过查询视图DBAjrAB工O1._STATISTICS的HlSTORAM列来获取,一般情况下包含3类:None(没有直方图)、FreqUency(频率直方图,也叫等频直方图)、He叫htBalanced(高度平衡直方图,也叫等高直方图)。在Oracle12c中,乂新增了两种类型的直方图,分别是顶级频率直方图(TopFreqUenCyHiStogram)和混合直方图(HybridHistogram)0本书只讨论频率和高度平衡直方图。(D频率(FreqUency,Freq)直方图在OraCIe12c之前,如果存储在数据字典里描述目标列直方图的BUCket的数量等于目标列的DISTINeT值的数量,那么这种类型的宜方图就是频率(Frequency)直方图。频率直方图只适用于那些目标列的DISTINCT值数量小于或等于254的情形。需要注意的是,在OraCIe12c中频率直方图所对应的Bucket的数量可以超过254对于频率直方图而言,目标列直方图的Bucket的数量等于目标列的DlSTINeT值的数量,此时目标列有多少个DlSTINeT值,OraClC在数据字典DBA-TAB-HISTOGRAMS、DBA_PART_HISTOGRMS、DBA_SUBPART_HTSTOGRMS(分别对应于表、分区和子分区的直方图统计信息)中就会存储多少条记录,每一条记录就代表了对其中的一个BUCket的描述,上述数据字典中的字段ENDPOINT_VA1.UE记录了这些DISTINCT值,而字段ENDPONTJUMBER则记录了到此DlSTINCT值为止总共有多少条记录。需要注意的是,对城率直方图而言,ENDPOINTUMBER是一个累加值,可以用一条记录的EDPOINTNUMBER值减去它上一条记录的ENDPOINTMjMBER值来得到这条记录本身所对应的ENDPOlNT_VA1.UE值的记录数,SQ1.如下:SE1.ECTSA1.,COUNT(*)COUNTS,SUM(COUNT(*)OVER(ORDERBYS1.RANGEUNBOUNDEDPRECEDING)CURR_ROWSFROMTST_20170604_1.HRTGROUPBYT.S1.:一从表中获取累加值SE1.ECTTAB1.E_NAME,CO1.IMN-NME,ENDPO1NT_NUMBER,ENDPolNT_VA1.UE,NV1.(ENDPolNT_NUMBER-(1.AG(ENDPoINTUMBER)OVER(ORDERBYENDPOINTJ'A1.UE),EM)POlNT_NUMBER)COUNTSFROMDBA_TAB_HISTOGRAMSWHERETAB1.E_NAME='T_ST_20170604_1.HR'一从直方图中短取分组记录数葡电平衡(HeightBalanced,HtBaD直方图如果存储在数据字典里描述目标列直方图的Bucket的数量小于目标列的DISTICT值的数量,那么这种类型的直方图就是高度平衡(HeightBaIanCed)直方图。在高度平衡直方图中,执行计划的列的选择性没有频率直方图精确,而在现实很多时候,列的唯一值是超过254的,那么只能使用高度平衡直方图。在高度平衡立方图中,DBAjrAB.HISTOGRAMS视图中的EDNPOINT_NUMBER代表桶号,且自动省去与EDNPOlNTJrA1.UE值相同且与ENDBOINT_NUMBER相邻的桶的值。EXDPolNT_VA1.UE表示每一个桶中的最大值,而第一个桶记录的是最小值(BUCket为0的行,即EDNPolNT.NUMBER为。的行).重复出现为ENDPolNT_VA1.UE的值称为PoPUIarValue。若PoPUlValUe所在记录的ENDPoINTJWMBER值和它上一条记录的ENDPONNUMBER值之间的差值越大,则意味着该POPUIarValUC在目标表中所占的比例也就越大,它所对应的Cardinality也就越大。在高度平衡直方图中,除了最后1个桶可能包含的数据比其他的桶少以外,所有其他的桶包含相同数量的值,其值为目标表总记录数除以BUCket的数量。(3)频率和高度平衡直方图的比对频率直方图目标列直方图的BUCket简介的数量=目标列的DISTINC值的数量频率直方图只适用于那使用场合些目标列的DISTINCT值数量小于或等于254高度平衡直方图目标列直方图的BUCket的数量V目标列的DISTINCT值的数量在高度平衡直方图中,除了最后1个桶可能包含的数据比其他的桶少以外,所有其他的桶包含相同数量的值,其值为的情形ENDPOlN1.VA1.UE的含义若为数值类型则代表不同的DISTlNCT值;若为字符类型则记录的是DISTINCT值转换后的值ENDPOINTNUMBER的含义记丧了到此DISTlNeT值为止累加的行数目标表总记录数除以Bucket的数量若为数值类型则表示每一个桶中的最大值,而第一个桶记录的是最小值(Bucket为O的行,即EDNPOINT_NUMBER为0的行):若为字符类型则记费的是转换后的值代表桶号,且H动省去与EDP0IWVA1.UE值相同且与ENDPOINT.NUMBER相邻的桶的值7节省空间,合并存储)考点统计信息10. 如何收集直方图?正确答案:默认情遍下,数据库会为列收集基本统评信息,但不会收集直方图信息。Oracle通过指定DBMS_STATS的METHoDOPT参数来创建直方图。METHOD_0PT参数可以接受如下的输入值:FORA1.1.INDEXEDHIDDENCO1.UMNSsizeclauseFORCO1.UMNSsizeclausecolumnattributesizeclause,columnattributesizeclause.其中的size_clause必须符合如下的格式:SIZE(integerREPEATUTOSKEWON1.Y)含义如下:i)Skewonly:只对数据分布不均衡的列收集直方图统计信息。2)REHEAT:只时已经有直方图统计信息的列收集直方图统计信息。3)AUTO:让OraCle白行决定是否对目标列收集直方图统计信息,以及使用哪种类型的直方图。4) integer:直方图的Bucket的数量,必须在1254的范围内,1表示删除该S标列上的直方图统计信息。METHODOPT参数的默认值为wFORA1.1.CO1.UMNSSIZEUTOm,“FORA1.1.CO1.UMXSSIZE1”表示删除所有列直方图统计信息。卜.面是一些常用的收集方法:1)对T表上所有有索引的列以Fl动收集的方式收集宜方图:FORA1.1.INDEXEDCO1.UMNSSIZElTO2)对T表上的列A和列B以自动收集的方式收集直方图:FORCO1.UMNSSIZEAUTOABo3)对T表上的列A和列B收集直方图统计信息,同时指定BUCKET数量均为10:FORCO1.UMNSSIZEIO为。4)对T表上的列A和列B收集直方图统计信息,同时指定列A的BUCKET数量为10,列B的BUCKET数量为5:FORCO1.UMNSASIZEIOBSIZE5。5)只删除表T上列A的直方图统计信息:FORCO1.UMNSASIZE1,6)删除表T上所有列的直方图统计信息:FORA1.1.CO1.UMNSSIZElo如果需要删除某个列SA1.的直方图信息.,在OracleIOg中可以通过设置uMETHOD-OPT=>>FORCO1.UMNSS1.SIZE1'”,但这却得再次收集表的统计信息,十分不合理。所以,在OraCIeIlg中,有如下方法可以直接删除宜方图信息:EXECDBMS_STATS.DE1.ETE_CO1.UMN_STATS(USER,T_ST_20170604_1.HR',SA1.,CO1._STAT_TYPE=>'H1STOGR,);蓑中,Co1.S'ATJYPE默认五Al1.表示删除列的基本统计信息和直方图信息。考点统计信息11. 基表CO1.USAGES的作用是什么?正确答案:从OraCIe9i开始引入了SYS.CO1.USAGE$表用来跟踪列的使用情况,该功能通过隐含参数“工O1.UMNJrRACKlM1.1.EVE1.”来控制。若隐含参数“_CO1.l;MN_TRACKNG_1.EVE1.”的植为。则取消该功能,若隐含参数m_CO1.IMN_TKACK1NG_1.EVE1."的值为1则表示该功能生效。默认情况下,该功能谑生效的,并且CBO负责将SQ1.语句中WHERE条件的查询谓词信息保存在该衣中,数据库在执行SHUTDoWNNoRMA1.或者SHUTDOWNIMvEDIATE会自动将该表中的数据清空。考点统计信息12. 新建索引后统计信息是否自动收集?正确答案:在OraCIeIOg后有个隐含参数“OPTIMIZERCOMPUTEINDEXSTATSv,意思是是否对新建索引收集统计信息,该参数默认是TRUE,表示默认收集新建索引的统计信息。考点统计信息13. 什么是基数反馈(CardinaIityFeedback)?正确答案:基数反馈(CardinalityFeedback,CFB)是OraCIellgR2出现的一个新特性,它的出现是为了帮助Oracle优化器依据更精准的基数生成更加优秀的执行计划。基数的评估准确与否,对于优化器异常重要,直接影响到后续的JOINCoST等市要的成本计算评估。若评估不当则会造成CBO选择不当的执行计划。此技术对于仅执行一次的SQ1.无效,在SQ1.第一次执行时,记录存储实际的基数和评估的基数之间的差异,如果差异较大,在第二次执行时,优化器会依据实际的基数市新决策生成执行计划,但是需要注意的是,当使用更准确的基数重新生成执行计划时,生成的执行计划与第一次时使用的执行计划完全有可能是相同的。这个技术的出现是由于优化器在一些情况卜不能很好地去计算基数的数值,比如统计信息缺失或陈旧、多谓词、直方图缺失等。Oracle只针对下面情况开启CFB:1)没有收集表的统计信息,并且动态采样(DynamiCSamPling)也没有开启2)查询条件复杂(比如条件有函数)或者涉及多列,但却没有收集扩展的统计信息(EXtendedStatistics)»在这几种情况下,CBO是无法估算出准确的CardinaliIy的。针对上述情况,OraCle会监控操作的实际行数(A-RoW),然后对比CBO估弊的行数(E-Row)o如果两个值相差很大,那么就记录实际行数(A-RoW),做上标记。下次执行时再次进行硬解析,根据实际行数来重新生成执行计划。如果两个值相差不大,那么CBo就不再监控这条SQ1.语句。OracleIlgR2针对此特性,也专门在丫$SQ1.SHAREDCURSOR中增加了USE_FEEDBACK_STATS列来记录SQ1.是否使用了基数反馈。基数反馈的开启和关闭通过一个隐含参数'OPTIMIZER一USE-FEEDBACK”来控制,该参数默认为TRUE,表示开启基数反袍特性。此参数除了可以在SESSIoN和SYSTEM级别进行设置之外,还可以在SQ1.语句级使用Hint进行开启和关闭,如下:SE1.ECT*+01y-PRM(,_OBT1MIZER_USEJ-EEDBACK,FA1.SE')*COUNT(*)FROMTEST;SE1.ECT*+0PT_PARAM('_OPTIV【ZER_USE_FEEDBACK''TRUE')*COUNT(*)FROMTEST;需要注意的是,如果动态采样被启用,那么是不会使用基数反馈特性的。若使用了该特性则在执行计划的Note部分可以看到“cardinalityfeedbackusedforthisStatement”字样。基数反馈在OraCIe12c上得到更进一步的扩展,称为统计反馈(StatiStiCSFeedbaCk),并且成为OraCle12c自动重新优化(AUtOmatiCReoPtimiZation)的一部分。但处由于CFB的评估结果数据只存在内存中(重启之后就会丢失),在会话之间是不可共用的,并且由于在OracleIlg中存在过多的Bug,常见的问题就是在第二次执行SQ1.时候性能下降很多。因此在OraCIeIlg的数据库中往往会时11.2.0.4以下的数据库将该特性关闭。考点统计信息14. 如何查询表和索引的历史统计信息?正确答案:从OraClc;0g开始,当收集表的统计信息的时候,旧的统计数据被保留,如果因为新的统计信息而出现性能问题,旧的统计信息就可以被恢复。历史统计信息保存在以下几张表中:DWRISOPTSTATTABHlSToRY表的统计信息。2) WRISOPTSTATINDHISToRY索引的统计信息。3)WR1$J)PTSTATjnSTHEADjnSTORY列的统计信息。4)WRisOptstatjistgrmjistory直方图的信息。从视图DBA_TAB_STATS_HISTORY可以查询历史收集统计信息的时间,但是不能查询到行数,所以需要结合基表来查闻,查询的SQ1.语句如下:SE1.ECTB.OWNER,B,OBJECT_NAMETAB1.E_NAME,TO_CHAR(D.ANA1.YZET1ME,YYYY-MM-DDHH24:M1:SS')1.SIANA1.YZE71ME,TO.CHAR(D.SAVTIME,YYYY-MM-DDHH24zMIzSS,)CURR.ANA1.YZETIME,D.ROWCNTFROMSYS.WRl$_OPTSTAT_TAB_HISTORYD,DBAJ)BJECTSBWHERED.OBJ=

    注意事项

    本文(数据库程序员面试分类真题15.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开