有关DBLINK的分布式SQL执行机制及优化-丁俊.doc

有关DBLINK的分布式SQL执行机制及优化-丁俊.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有关DBLINK的分布式SQL执行机制及优化方法 --丁俊 1.背景介绍 分布式查询语句对于远程对象的查询在远程库执行,在远程库可以执行的SQL语句会通过优化器的查询转换,执行的是转换后的语句,然后结果集返回到本地,再与本地表运算。当然, 本地操作还是远程操作是相对的,我们可以通过driving_site hint改变主查询计划的执行位置,但是对DML,driving_site是失效的,另外对远程表也可以使用其他hint来控制执行计划。 2.优化目标 分布式查询语句中可能有不同远程库的表,优化分布式查询要达到3点目标: 1.访问同一个远程库的次数要尽量少,也就是同一远程库的对象应该尽量转为一条SQL运算,一次运算,运算后将结果返回给本地库。 2.从远程库上返回到本地库的结果集要尽量小,只访问远程对象需要的字段,从而减少网络传输。 3.远程库上执行的语句的执行计划、远程库返回的结果与本地联合查询的计划应该比较高效。 如果能够达到以上3点,一般情况下,分布式查询的效率较高。 3.优化方法 优化分布式查询需要从以上3个方面着手。 以下样例中,local_tab 7万多条,remote_big_tab百万条,remote_small_tab 7万多条。 3.1.使用Collocated内联视图 ? 也就是说,SQL要引用不同远程库的表,需要组织好语句结构:将相同库的表放一起组成内联视图,这样ORACLE就很容易知道这个内联视图里的表是在同一远程库作完查询,然后再返回给本地库,这样减少了本地库与远程库的交互次数、传输结果集的数量和次数,从而提高效率。比如查询: SELECT ?* FROM local_tab a ?WHERE EXISTS ?(SELECT ?1 FROM remote_big_tab@remote b,remote_small_tab@remote c ?WHERE b.object_id=c.object_id AND a.object_type=b.object_type); 执行计划 ---------------------------------------------------------- Plan hash value:------------------------------------------------------------------------------------------------ | Id ?| Operation ? ? ? ? ?| Name ? ? ?| Rows ?| Bytes | Cost (%CPU)| Time ? ? | Inst ? |IN-OUT| ------------------------------------------------------------------------------------------------ | ? 0 | SELECT STATEMENT ? | ? ? ? ? ? | 42747 | ?4508K| ?2152 ? (4)| 00:00:26 | ? ? ? ?| ? ? ?| |* ?1 | ?HASH JOIN ? ? ? ? | ? ? ? ? ? | 42747 | ?4508K| ?2152 ? (4)| 00:00:26 | ? ? ? ?| ? ? ?| | ? 2 | ? VIEW ? ? ? ? ? ? | VW_SQ_1 ? | ? ?26 | ? 286 | ?1855 ? (4)| 00:00:23 | ? ? ? ?| ? ? ?| | ??3 | ? ?REMOTE???? ? ? ?| ? ? ? ? ? | ? ? ? | ? ? ? | ? ? ? ? ? ?| ? ? ? ? ?| REMOTE | R-S | | ? 4 | ? TABLE ACCESS FULL| LOCAL_TAB | 73985 | ?7008K| ? 296 ? (1)| 00:00:04 | ? ? ? ?| ? ? ?| ------------------------------------------------------------------------------------------------ Predicate Information (identified by operation id): --------------------------------------------------- ? ?1 - access(A.OBJECT_TY

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档