oracle并行parallel update两张表_原来update也能并行,从执行计划看enable parallel dml的作用...

本文通过实例展示了如何在Oracle数据库中使用并行更新(Parallel Update)操作,通过`ALTER SESSION ENABLE PARALLEL DML`命令改变会话的并行DML状态,从而加速对大表`BIG_TAB`的更新。实验显示了启用并行DML前后,更新操作的执行计划和效率变化。
摘要由CSDN通过智能技术生成

dingjun在QQ群中说的,我只是测试一把

SQL> create table big_tab as select * from all_objects;

表已创建。

已用时间:  00: 00: 05.99

SQL> desc big_tab

名称                                                                                是否为空? 类型

----------------------------------------------------------------------------------- -------- --------------------------------------------------------

OWNER                                                                               NOT NULL VARCHAR2(30)

OBJECT_NAME                                                                         NOT NULL VARCHAR2(30)

SUBOBJECT_NAME                                                                               VARCHAR2(30)

OBJECT_ID                                                                           NOT NULL NUMBER

DATA_OBJECT_ID                                                                               NUMBER

OBJECT_TYPE                                                                                  VARCHAR2(19)

CREATED                                                                             NOT NULL DATE

LAST_DDL_TIME                                                                       NOT NULL DATE

TIMESTAMP                                                                                    VARCHAR2(19)

STATUS                                                                                       VARCHAR2(7)

TEMPORARY                                                                                    VARCHAR2(1)

GENERATED                                                                                    VARCHAR2(1)

SECONDARY                                                                                    VARCHAR2(1)

NAMESPACE                                                                           NOT NULL NUMBER

EDITION_NAME                                                                                 VARCHAR2(30)

SQL> explain plan for update /*+parallel (s,4)*/ big_tab s set object_name=lower(object_name);

已解释。

已用时间:  00: 00: 00.46

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT

------------------------------------------------------------------------------------------------------------------------------------------------------

Plan hash value: 3425284328

---------------------------------------------------------------------------------------------------------------

| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |

---------------------------------------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT      |          | 82514 |  1369K|    86   (0)| 00:00:01 |        |      |            |

|   1 |  UPDATE               | BIG_TAB  |       |       |            |          |        |      |            |

|   2 |   PX COORDINATOR      |          |       |       |            |          |        |      |            |

|   3 |    PX SEND QC (RANDOM)| :TQ10000 | 82514 |  1369K|    86   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |

|   4 |     PX BLOCK ITERATOR |          | 82514 |  1369K|    86   (0)| 00:00:01 |  Q1,00 | PCWC |            |

|   5 |      TABLE ACCESS FULL| BIG_TAB  | 82514 |  1369K|    86   (0)| 00:00:01 |  Q1,00 | PCWP |            |

---------------------------------------------------------------------------------------------------------------

Note

-----

- dynamic sampling used for this statement (level=2)

已选择16行。

已用时间:  00: 00: 00.05

SQL> alter session enable parallel dml;

ERROR:

ORA-12841: 无法变更事务处理中的会话并行 DML 状态

已用时间:  00: 00: 00.00

SQL> show user

USER 为 "TPCH"

SQL> disc

从 Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

SQL> conn tpch/tpch

已连接。

SQL> alter session enable parallel dml;

会话已更改。

已用时间:  00: 00: 00.00

SQL> explain plan for update /*+parallel (s,4)*/ big_tab s set object_name=lower(object_name);

已解释。

已用时间:  00: 00: 00.02

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT

------------------------------------------------------------------------------------------------------------------------------------------------------

Plan hash value: 3465571411

---------------------------------------------------------------------------------------------------------------

| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |

---------------------------------------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT      |          | 82514 |  1369K|    86   (0)| 00:00:01 |        |      |            |

|   1 |  PX COORDINATOR       |          |       |       |            |          |        |      |            |

|   2 |   PX SEND QC (RANDOM) | :TQ10000 | 82514 |  1369K|    86   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |

|   3 |    UPDATE             | BIG_TAB  |       |       |            |          |  Q1,00 | PCWP |            |

|   4 |     PX BLOCK ITERATOR |          | 82514 |  1369K|    86   (0)| 00:00:01 |  Q1,00 | PCWC |            |

|   5 |      TABLE ACCESS FULL| BIG_TAB  | 82514 |  1369K|    86   (0)| 00:00:01 |  Q1,00 | PCWP |            |

---------------------------------------------------------------------------------------------------------------

Note

-----

- dynamic sampling used for this statement (level=2)

已选择16行。

已用时间:  00: 00: 00.04

SQL>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值