为什么增加并行度会增加查询时间

时间:2015-03-10 08:04:07

标签: oracle oracle11g

我有一张800万行的表。

我创建了完全相同的表,没有任何索引,pk,fk,并尝试将表活动中的所有记录插入temp_activity。

alter session enable parallel dml;
alter table activity_temp nologging

insert into  temp_activity m
  select /*+ APPEND PARALLEL (i) */
   t.*
    from activity t

我的结果是

i=1 -> 168 sec
i=2 -> 197 sec
i=3 -> 208 sec
i=10 -> 268 sec
without  /*APPEND PARALEL*/ hint -> +10 min

问题是自解释的:编译器有什么问题?

1 个答案:

答案 0 :(得分:2)

  

选择/ * + APPEND PARALLEL(i)* /

对我毫无意义。为什么你会在SELECT中有APPEND提示?

我想你想这样做:

alter session enable parallel dml;
insert /*+ append parallel(i) */ into temp_activity select * from activity;

另外,请注意并行始终是直接路径,如果并行,则会追加。并行插入将对表进行独占锁定。因为,在并行修改对象后,您无法读取/修改对象。

为您好好阅读https://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:1211797200346279484

关于并行类型,一切都记录在案。阅读http://docs.oracle.com/cd/E11882_01/server.112/e25523/parallel003.htm#i1006712