ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何让insert /*+ append */ 采用并行。

如何让insert /*+ append */ 采用并行。

原创 Linux操作系统 作者:wei-xh 时间:2010-05-31 22:03:37 0 删除 编辑
SQL> explain plan for insert /*+ append  parallel(my 2) */ into my select * from ac01;

已解释。

已用时间:  00: 00: 00.16
SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------
--------
Plan hash value: 2164050840

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | INSERT STATEMENT   |      |  1902K|   335M| 14813  (20)| 00:02:58 |
|   1 |  LOAD AS SELECT    | MY   |       |       |            |          |
|   2 |   TABLE ACCESS FULL| AC01 |  1902K|   335M| 14813  (20)| 00:02:58 |
---------------------------------------------------------------------------

已选择9行。

已用时间:  00: 00: 01.77



貌似insert部分,不能使用并行。select 部分是可以并行的。
SQL> explain plan for insert /*+ append */ into my select /*+ parallel(ac01 2) */ * from ac01;
已解释。
已用时间:  00: 00: 00.11
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------------------
--------
Plan hash value: 2135288090
---------------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
---------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT      |          |  1902K|   335M|  8068  (18)| 00:01:37 |        |      |         |
|   1 |  LOAD AS SELECT       | MY       |       |       |            |          |        |      |         |
|   2 |   PX COORDINATOR      |          |       |       |            |          |        |      |         |
|   3 |    PX SEND QC (RANDOM)| :TQ10000 |  1902K|   335M|  8068  (18)| 00:01:37 |  Q1,00 | P->S | QC (RAND)  |
|   4 |     PX BLOCK ITERATOR |          |  1902K|   335M|  8068  (18)| 00:01:37 |  Q1,00 | PCWC |         |
|   5 |      TABLE ACCESS FULL| AC01     |  1902K|   335M|  8068  (18)| 00:01:37 |  Q1,00 | PCWP |         |
---------------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.64




和书里(Troubleshooting Oracle Performance)所说的不一样:
Execute the SQL statement in parallel. Note that in this case, both the INSERT and the
SELECT can be parallelized independently. To take advantage of direct-path inserts, at
least the INSERT part must be parallelized.

书里说,insert 和select都是可以并行的。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22034023/viewspace-664136/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE组成员,DBGeeK用户组发起人。曾在DTCC、ORACLE技术嘉年华、Gdevops等公开场合做过数据库技术专题分享,2017年应Oracle邀请在世界最大的数据库会议OOW上做技术分享。组织翻译了《拨云见日,解密Oracle ASM内核》一书。

注册时间:2009-07-04

  • 博文量
    422
  • 访问量
    2425305