下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 nomerge可解决访问数据字典效率低(Nomerge can solve the access…

nomerge可解决访问数据字典效率低(Nomerge can solve the access data dictionary inefficient).doc

nomerge可解决访问数据字典效率低(Nomerge can…

马月星
2018-04-29 0人阅读 举报 0 0 暂无简介

简介:本文档为《nomerge可解决访问数据字典效率低(Nomerge can solve the access data dictionary inefficient)doc》,可适用于社会民生领域

nomerge可解决访问数据字典效率低(Nomergecansolvetheaccessdatadictionaryinefficient)nomerge可解决访问数据字典效率低(Nomergecansolvetheaccessdatadictionaryinefficient)NOmergesolvestheproblemofinefficientaccesstodatadictionariesThedatadictionaryviewdatabaseaccessisgenerallymorequickly,becausetheOraclehasmadeaspecialoptimizationwork,butinsomecases,severaldatadictionaryareassociated,CBOisnotsosmart,sometimessomeinefficientexecutionplanForexample,whentryingtoconstructalargetable,youwanttoconstructtheCartesianproductofDBAOBJECTSandanothertablewithasmallamountofdata,DBASEQUENCES:oraclelocalhostsqlplustesttest~$SQL*Plus:ReleaseProductiononThursday,June,::Copyright(c),,Oracle,Corporation,All,rights,reservedConnectto:Oraclei,Enterprise,Edition,Release,ProductionWith,the,Partitioning,OLAP,and,Oracle,Data,Mining,optionsJServerReleaseProductionSQL>SETPAGESLINESSQL>,COL,PLANPLUSEXP,FORMAT,ASQL>SETTIMINGONSQL>,SELECT,COUNT(*),FROM,DBASEQUENCES,DBAOBJECTSCOUNT(*)DearsirsreFourmillionfivehundredandeightyfivethousandtwohundredandseventysixTimetaken:::ThequeryhasbeenrunningforhalfanhourSQL>,SELECT,COUNT(*)FROM,DBASEQUENCESCOUNT(*)DearsirsreOnehundredandfortysixTimetaken:::SQL>,SELECT,COUNT(*)FROM,DBAOBJECTSCOUNT(*)DearsirsreThirtyonethousandfourhundredandsixTimetaken:::TheamountofdatainthetwoviewisnotverylargeTheCartesianproductisnomorethanaboutfourmillionHowcanitbeexecutedforsolong:SQL>EXPLAINPLANFOR,SELECT,COUNT(*),FROM,DBASEQUENCES,DBAOBJECTSAlreadyexplainedTimetaken:::SQL>SELECT*FROMTABLE(DBMSXPLANDISPLAY)PLANTABLEOUTPUTIdOperationName||||Rows|Bytes|Cost|||SELECTSTATEMENT|||||||SORTAGGREGATE|||||||NESTEDLOOPS|||||||NESTEDLOOPS|||||||NESTEDLOOPS|||||||VIEW|DBAOBJECTS||||||UNIONALL||||||*|FILTER||||||TABLEACCESSBYINDEXROWID|OBJ$|||||||NESTEDLOOPS|||||TABLEACCESSFULL|||USER$||||INDEXRANGESCAN|*||IOBJ|||||*TABLEACCESSBYINDEXROWID|IND$|||||INDEXUNIQUESCAN|*||IIND||||||NESTEDLOOPS|||||TABLEACCESSFULL|||USER$||||INDEXRANGESCAN|*||ILINK||||TABLEACCESSFULL|||USER$|||||TABLEACCESSBYINDEXROWID||OBJ$||||INDEXRANGESCAN|*||IOBJ|||||×|索引唯一扫描|iseq||||谓词信息(由操作ID标识):过滤器(“sysalias”。”#”<>、“sysalias”。”#”<>或“sysalias”。”#”=(选择从“系统”。“工业”“我”“我”。“obj#”=:B和(“我”。”#”=或“我”。”#”=或“我”。”#”=或“我”。”#”=“我”。”#”=或“我”。”#”=或“我”。”#”=))=)访问(“sysalias”。“老板#”=“U”“用户#”和“sysalias”。“linkname”)滤波器(“sysalias”。“linkname”无效“sysalias”。“名”<>'defaultauditingoptions”“sysalias”。“名”<>'nextobject”)过滤器(“我”。”#”=或“我”。”#”=或“我”。”#”=或“我”。”#”=“我”。”#”=或“我”。”#”=或“我”。”#”=)访问(“我”。“obj#”=:B)访问(“L”“业主#”=“U”“用户#”)访问(“U”“用户#”=“O”“业主#”)访问(“O”。“obj#”=“”。obj#”)注意:基于规则的优化行已选择。已用时间:::检查执行计划发现由于两个视图的一些数据来自相同的内部集群表于是CBO“聪明地”修改了执行计划将两个视图的查询拆散重新构造了执行计划。而事实证明这个执行计划是十分糟糕的。由于单个视图都是经过Oracle优化过的因此单独访问任何一个视图都没有性能问题于是利用nomerge提示避免Oracle将视图的查询拆散:SQL>设置autot上SQL>选择*nomerge(一)nomerge(B)*计数(*)从dbasequencesdbaobjectsB计数(*)四百五十八万五千二百七十六已用时间:::执行计划选择语句优化器=选择(成本=卡=)类(合计)合并连接(笛卡尔)(成本=卡=)“dbaobjects视图(成本=卡=)unionall过滤器个嵌套循环(成本=卡=字节=)表访问(全)“obj$(成本=卡=字节=)表访问(群集)的“用户$”(成本=卡=字节=)指数(独特的扫描)'iuser#'(非唯一)表的访问(通过索引rowid)的股份$(成本=卡=字节=)指数(独特的扫描)'iind”(独特的)(成本=卡=)哈希连接(成本=卡=字节=)表访问(满)的'链接$'(成本=卡=字节=)表访问(满)的“用户$”(成本=卡=字节=)缓冲(排序)(成本=卡=)“dbasequences视图(成本=卡=)个嵌套循环(成本=卡=字节=)哈希连接(成本=卡=字节=)表访问(满)的“用户$”(成本=卡=字节=)表访问(全)“obj$(成本=卡=字节=)指数(独特的扫描)'iseq”(独特的)统计递归调用分贝块得到一致的获取物理读重做日志大小字节发送SQL*NET客户端字节通过网络从客户端收到的SQL*Net切换到从客户端类(内存)类(磁盘)行处理可以看到二者的效率可谓天壤之别一个需要多分钟另一个执行不到秒。从执行计划上看利用nomerge提示后Oracle没有将两个视图的执行计划打散而是直接对两个视图访问的结果进行笛卡儿积而这正是我们希望的结果。这个方法并不是特例很多访问数据字典视图的性能问题都可以通过这个方法来解决。也有有人会置疑从执行计划上看明显第一个SQL是RBO而第二个SQL由于加上了暗示优化器采用CBO是否由于CBO优于RBO导致效率的提升。事实上采用CBO确实可以提高访问效率至少得到的执行计划没有那么离谱但是与nomerge提示的效果相比还是要逊色不少:SQL>选择**allrows计数(*)从dbasequencesdbaobjects计数(*)四百五十八万五千二百七十六已用时间:::执行计划选择语句优化器=暗示:allrows(成本=卡=字节=)类(合计)哈希连接(成本=卡=字节=)表访问(满)的“用户$”(成本=卡=字节=)哈希连接(成本=卡=字节=)表访问(全)“obj$(成本=卡=字节=)合并连接(笛卡尔)(成本=卡=字节=)“dbaobjects视图(成本=卡=)unionall过滤器个嵌套循环(成本=卡=字节=)表访问(全)“obj$(成本=卡=字节=)表访问(群集)的“用户$”(成本=卡=字节=)指数(独特的扫描)'iuser#'(非唯一)表的访问(通过索引rowid)的股份$(成本=卡=字节=)指数(独特的扫描)'iind”(独特的)(成本=卡=)哈希连接(成本=卡=字节=)表访问(满)的'链接$'(成本=卡=字节=)表访问(满)的“用户$”(成本=卡=字节=)缓冲(排序)(成本=卡=字节=)指数(快速扫描)'iseq”(独特的)(成本=卡=字节=)统计递归调用分贝块得到一致的获取物理读重做日志大小字节发送SQL*NET客户端字节通过网络从客户端收到的SQL*Net切换到从客户端类(内存)类(磁盘)行处理可以看到使用CBO比RBO情况要好很多但是执行时间仍然是使用nomerge的倍多

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/9

nomerge可解决访问数据字典效率低(Nomerge can solve the access data dictionary inefficient)

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利