Gar*_*ary 7 oracle oracle10g oracle11g
我有一个像这样的SQL:
Insert into A
Select * from B;
Run Code Online (Sandbox Code Playgroud)
现在我想让它并行运行.我的问题是并行插入或选择或两者?请参阅以下sqls,您能告诉我哪一个正确或哪个具有最佳性能.我没有dba权限,所以我无法检查其执行计划.
1) Insert /*+ parallel(A 6) */ into A select * from B;
2) Insert into A select/*+ parallel(B 6) */ * from B;
3) Insert /*+ parallel(A 6) */ into A select /*+ parallel(B 6) */ * from B;
谢谢!
Jon*_*ler 13
并行化INSERT和SELECT最快.
(如果你有足够多的数据,你有一个不错的服务器,一切都是明智的配置,等等)
你肯定想自己测试一下,特别是找到最佳的并行度.围绕Oracle并行执行有很多神话,甚至手册有时也是非常错误的.
在11gR2上,我建议你像这样运行你的语句:
alter session enable parallel dml;
insert /*+ append parallel(6) */ into A select * from B;
Run Code Online (Sandbox Code Playgroud)
parallel(6)使用语句级并行,而不是对象级并行.这是一个11gR2功能,允许您轻松地并行运行所有内容,而不必担心对象别名或访问方法.对于10G,您必须使用多个提示.append提示不是必需的.如果您的DML并行运行,它将自动使用直接路径插入.但是,如果您的语句降级为serial,例如,如果没有可用的并行服务器,那么append提示可以产生很大的不同.| 归档时间: |
|
| 查看次数: |
31163 次 |
| 最近记录: |