gpt4 book ai didi

oracle - 关于Oracle并行插入性能

转载 作者:行者123 更新时间:2023-12-02 09:38:07 25 4
gpt4 key购买 nike

我有一个这样的sql:

Insert into A
Select * from B;

现在我希望它并行运行。我的问题是并行插入或选择或两者?看看下面的sql,你能告诉我哪一个是正确的或者哪一个性能最好。我没有dba权限,所以无法检查其执行计划。

1) Insert/*+ parallel(A 6) */into A select * from B;

2) 插入A select/*+parallel(B 6) */* from B;

3) 将/*+ 并行(A 6) */插入 A select/*+ 并行(B 6) */* from B;

谢谢!

最佳答案

并行化 INSERTSELECT 是最快的。

(如果你有足够多的数据,你有一个像样的服务器,一切都配置合理,等等)

您肯定想亲自测试一下,尤其是找到最佳并行度。关于Oracle并行执行有很多神话,甚至手册有时也是horribly wrong .

在 11gR2 上,我建议您像这样运行语句:

alter session enable parallel dml;
insert /*+ append parallel(6) */ into A select * from B;
  1. 您始终希望首先启用并行 dml。
  2. parallel(6) 使用 statement-level parallelism ,而不是对象级并行性。这是 11gR2 的一项功能,可让您轻松并行运行所有内容,而不必担心对象别名或访问方法。对于 10G,您必须使用多个提示。
  3. 通常,append 提示不是必需的。如果您的 DML 并行运行,它将自动使用直接路径插入。但是,如果您的语句降级为串行,例如,如果没有可用的并行服务器,则 append 提示可能会产生很大的影响。 (使用 append 提示的建议假设您只关心最大性能。如果您不能使用直接路径写入,可能是因为您需要在插入期间立即恢复或修改表,那么您可能希望避免 append 提示,甚至使用 noappend。)

关于oracle - 关于Oracle并行插入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10421806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com