暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
优化DBLINK跨库操作语句的执行效率.pdf
61
20页
0次
2024-01-25
5墨值下载
有关 DBLINK 操作语句的
执行机制及优化方式
分布式查询语句对于远程对象的查询在远程库执行,在远程可以执行的语
句会通过优化器的查询转换,执行的是转换后的语句,然后结果集返回到本
地,再与本地表运算。当然,
本地还是远程是相对的,我们可以通过 driving_hint 改变主查询计划的执行
位置,但是对 DMLdriving_site 是失效的另外对远程表也可以使用其他
hint
(这里补充下我自己的理解,原文说是对 dml 失效,dml 这边应该
insert,updatedelete driving_site 的失效)
分布式查询可能一条 SQL 语句中有不同远程库的表,优化分布式查询要达
3 点效果
1.访问同一个远程库的次数要尽量少,也就是同一远程库的对象应该尽量转为
一条 SQL 运算,一次运算,运算后将结果返回给本地库
2.从远程库上返回到本地库的结果要尽量少,只访问远程对象需要的字段
3.远程库上执行的语句的计划以及远程库返回的结果与本地可以联合查询的
计划应该高效
优化分布式查询需要从以上 3 个方面着手。
下面的 local_tab 7 万多条,remote_big_tab 百万条,remote_small_tab
7 万多条。
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: 49311412
-----------------------------------------------------------------------------------
-------------
| 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):
of 20
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜