Q 题目如下所示:
Oracle hint中的DRIVING_SITE的作用是什么?
A 答案如下所示:
日常工作中经常会用到分布式数据库查询,即通过DBLINK同时查询本地表和远程表。分布式查询一般有两种处理方式:一种将远程表数据取回本地,然后和本地表关联查询,获取最终结果;另一种将本地表数据传到远程和远程表关联查询后,再将关联结果取回。前一种处理方式可理解为只有一次网络传输操作比后一种少,也就作为了数据库的默认处理方式。DRIVING_SITE提示能够指定执行计划在远程还是本地做,使用DRIVING_SITE,特别是本地小结果集,远程大结果集,最终结果集较小时,希望计划在远程驱动,这样远程执行完毕,将结果集传输到本地,避免了大结果集的网络传输,从而达到整体优化的效果。使用DRIVING_SITE可以减少总体的网络传输数据量。
当DRIVING_SITE驱动的对象嵌套在视图中时,可通过DRIVING_SITE(V.T)方式来指定,其中V表示视图别名或名称,T表示视图里表的别名或名称。
需要注意的是,对于DML和DDL语句,DRIVING_SITE提示是失效的,会自动被Oracle忽略掉,此时将以目标表所在库为主计划驱动,相当于DRIVING_SITE(目标表库),此时可以通过视图转换来达到优化目的。DML和DDL中如果是对本地表做DML,主计划总是在本地做,会将远程数据拉到本地,相当于DRIVING_SITE(本地表)。如果是对远程表做DML,那么主计划总是在远程做,会将本地数据送到远程,相当于自动DRIVING_SITE(远程表)。
& 说明:
有关HINT的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2125011/、http://blog.itpub.net/26736162/viewspace-2125709/、http://blog.itpub.net/26736162/viewspace-2125815/
DB笔试面试历史连接
|
About Me:小麦苗
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 文章内容来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。
本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。