六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 107|回复: 0

oracle 并行学习 (三)

[复制链接]

升级  5.6%

162

主题

162

主题

162

主题

进士

Rank: 4

积分
528
 楼主| 发表于 2013-1-29 22:55:57 | 显示全部楼层 |阅读模式
并行DML
 
1.以下DML语句可以被并行地执行:

 
DELETE
 
包含子查询的INSERT
 
MERGE
 
UPDATE
 
2.DML语句不能在以下情况下并行执行
 
当表上有触发器时;
 
当表上有自引用的外键约束,或支持迭代删除的外键约束,或延迟的约束时;
 
当对象类型字段被修改的时候;
 
当聚簇表或临时表被修改的时候;
 
默认情况下并行DML是被禁止的。在会话级别,可以使用下面的SQL语句启用或禁用它们。
 
ALTER SESSION ENABLE PARALLEL DML
 
ALTER SESSION DISABLE PARALLEL DML
 
另外,也可以使用下面的SQL语句来强制按照指定的并行度进行并行处理
 
ALTER SESSION FORCE PARALLEL DML PARALLEL 4
 
注意:必须在会话级别绝对启动并行DML的情况下,才可以并行处理DML语句,单独使用提示无法启动并行DML语句。
 
SELECT pdml_status FROM v$session WHERE sid=sys_context('userenv','sid')查询会话级别并行DML状态
 
除INSERT语句外,并行执行DML语句也需要启用并行查询。实际上,DML语句基本上是由两个操作组成的:首先找到需要
 
被修改的记录,然后修改这些记录。问题是,如果查找记录的部分没有并行地执
 
行,那么修改记录的部分就不能被并行执行。
 测试记录如下:
[email=LIBIN@orac>CREATE]LIBIN@orac>CREATE[/email] TABLE t AS
  2  SELECT rownum AS id, rpad('*',100,'*') AS pad
  3  FROM dual
  4  CONNECT BY level <= 100000;
表已创建。
已用时间:  00: 00: 12.64
[email=LIBIN@orac]LIBIN@orac[/email]>
[email=LIBIN@orac>execute]LIBIN@orac>execute[/email] dbms_stats.gather_table_stats(ownname => user, tabname => 't')
PL/SQL 过程已成功完成。
已用时间:  00: 00: 26.32
初始会话级别并行状态为DISABLED
[email=LIBIN@orac%3ESELECT]LIBIN@orac>SELECT[/email] pdml_status
  2  FROM v$session
  3  WHERE /* sid = sys_context('userenv','sid') */
  4        audsid = sys_context('userenv','sessionid');
PDML_STATUS
----------------
DISABLED
已用时间:  00: 00: 00.54
在会话级别查询并行状态
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.01
[email=LIBIN@orac]LIBIN@orac[/email]>
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] pdml_status
  2  FROM v$session
  3  WHERE /* sid = sys_context('userenv','sid') */
  4        audsid = sys_context('userenv','sessionid');
PDML_STATUS
----------------
DISABLED
已用时间:  00: 00: 00.54
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION ENABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.01
[email=LIBIN@orac]LIBIN@orac[/email]>
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] pdml_status
  2  FROM v$session
  3  WHERE /* sid = sys_context('userenv','sid') */
  4        audsid = sys_context('userenv','sessionid');
PDML_STATUS
----------------
ENABLED
已用时间:  00: 00: 00.04
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION FORCE PARALLEL DML PARALLEL 4;
会话已更改。
已用时间:  00: 00: 00.00
[email=LIBIN@orac]LIBIN@orac[/email]>
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] pdml_status
  2  FROM v$session
  3  WHERE /* sid = sys_context('userenv','sid') */
  4        audsid = sys_context('userenv','sessionid');
PDML_STATUS
----------------
FORCED
已用时间:  00: 00: 00.01
并行INSERT操作测试
首先禁用并行DML,INSERT语句无法进行并行操作

[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.00
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR INSERT INTO t SELECT * FROM t;
已解释。
已用时间:  00: 00: 00.01
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | INSERT STATEMENT  |      |   100K|    10M|   350   (2)| 00:00:05 |
|   1 |  TABLE ACCESS FULL| T    |   100K|    10M|   350   (2)| 00:00:05 |
--------------------------------------------------------------------------
已选择8行。
已用时间:  00: 00: 00.18
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
打开并行DML,INSERT语句可以进行并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION FORCE PARALLEL DML PARALLEL 4;
会话已更改。
已用时间:  00: 00: 00.01
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR INSERT INTO t SELECT * FROM t;
已解释。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3884603837
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation               | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT        |          |   100K|    10M|    97   (2)| 00:00:02 |        |      |            |
|   1 |  PX COORDINATOR         |          |       |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM)   | :TQ10001 |   100K|    10M|    97   (2)| 00:00:02 |  Q1,01 | P->S | QC (RAND)  |
|   3 |    LOAD AS SELECT       | T        |       |       |            |          |  Q1,01 | PCWP |            |
|   4 |     PX RECEIVE          |          |   100K|    10M|    97   (2)| 00:00:02 |  Q1,01 | PCWP |            |
|   5 |      PX SEND ROUND-ROBIN| :TQ10000 |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | P->P | RND-ROBIN  |
|   6 |       PX BLOCK ITERATOR |          |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | PCWC |            |
|   7 |        TABLE ACCESS FULL| T        |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | PCWP |            |
-----------------------------------------------------------------------------------------------------------------
已选择14行。
已用时间:  00: 00: 00.15
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
禁用并行DML模式,在提示语句下操作情况如下,INSERT语句无法进行并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.06
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR INSERT /*+ parallel(t 4) */ INTO t SELECT /*+ parallel(t 4) */ * FROM t;
已解释。
已用时间:  00: 00: 00.14
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3050126167
--------------------------------------------------------------------------------------------------------------
| Id  | Operation            | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT     |          |   100K|    10M|    97   (2)| 00:00:02 |        |      |            |
|   1 |  PX COORDINATOR      |          |       |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM)| :TQ10000 |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    PX BLOCK ITERATOR |          |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | PCWC |            |
|   4 |     TABLE ACCESS FULL| T        |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | PCWP |            |
--------------------------------------------------------------------------------------------------------------
已选择11行。
已用时间:  00: 00: 00.10
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.04
启用并行DML模式,在提示语句下操作情况如下,INSERT语句可以进行并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION FORCE PARALLEL DML PARALLEL 4;
会话已更改。
已用时间:  00: 00: 00.00
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR INSERT /*+ parallel(t 4) */ INTO t SELECT /*+ parallel(t 4) */ * FROM t;
已解释。
已用时间:  00: 00: 00.21
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3884603837
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation               | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT        |          |   100K|    10M|    97   (2)| 00:00:02 |        |      |            |
|   1 |  PX COORDINATOR         |          |       |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM)   | :TQ10001 |   100K|    10M|    97   (2)| 00:00:02 |  Q1,01 | P->S | QC (RAND)  |
|   3 |    LOAD AS SELECT       | T        |       |       |            |          |  Q1,01 | PCWP |            |
|   4 |     PX RECEIVE          |          |   100K|    10M|    97   (2)| 00:00:02 |  Q1,01 | PCWP |            |
|   5 |      PX SEND ROUND-ROBIN| :TQ10000 |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | P->P | RND-ROBIN  |
|   6 |       PX BLOCK ITERATOR |          |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | PCWC |            |
|   7 |        TABLE ACCESS FULL| T        |   100K|    10M|    97   (2)| 00:00:02 |  Q1,00 | PCWP |            |
-----------------------------------------------------------------------------------------------------------------
已选择14行。
已用时间:  00: 00: 00.23
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
并行UPDATE操作
禁用DML并行模式,UPDATE 语句无法进行并行操作

[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR UPDATE t SET id = id + 1;
已解释。
已用时间:  00: 00: 00.01
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 931696821
---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | UPDATE STATEMENT   |      |   100K|   488K|   350   (2)| 00:00:05 |
|   1 |  UPDATE            | T    |       |       |            |          |
|   2 |   TABLE ACCESS FULL| T    |   100K|   488K|   350   (2)| 00:00:05 |
---------------------------------------------------------------------------
已选择9行。
已用时间:  00: 00: 00.06
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
打开DML并行模式,UPDATE 语句可以进行并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION FORCE PARALLEL DML PARALLEL 4;
会话已更改。
已用时间:  00: 00: 00.00
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR UPDATE t SET id = id + 1;
已解释。
已用时间:  00: 00: 00.07
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2037160838
---------------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
---------------------------------------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT      |          |   100K|   488K|    97   (2)| 00:00:02 |        |      |            |
|   1 |  PX COORDINATOR       |          |       |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM) | :TQ10000 |   100K|   488K|    97   (2)| 00:00:02 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    UPDATE             | T        |       |       |            |          |  Q1,00 | PCWP |            |
|   4 |     PX BLOCK ITERATOR |          |   100K|   488K|    97   (2)| 00:00:02 |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T        |   100K|   488K|    97   (2)| 00:00:02 |  Q1,00 | PCWP |            |
---------------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.06
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.06
[email=LIBIN@orac]LIBIN@orac[/email]>
当并行查询和并行DML语句都禁用时,没有操作被并行化
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL QUERY;
会话已更改。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.00
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] TABLE t PARALLEL 2;
表已更改。
已用时间:  00: 00: 00.45
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR UPDATE t SET id = id + 1;
已解释。
已用时间:  00: 00: 00.10
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 931696821
---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | UPDATE STATEMENT   |      |   100K|   488K|   350   (2)| 00:00:05 |
|   1 |  UPDATE            | T    |       |       |            |          |
|   2 |   TABLE ACCESS FULL| T    |   100K|   488K|   350   (2)| 00:00:05 |
---------------------------------------------------------------------------
已选择9行。
已用时间:  00: 00: 00.04
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.06
当只有并行查询被启用时,DML语句的更新部分没有并行执行
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION ENABLE PARALLEL QUERY;
会话已更改。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.01
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] TABLE t PARALLEL 2;
表已更改。
已用时间:  00: 00: 00.21
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR UPDATE t SET id = id + 1;
已解释。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1378397380
---------------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
---------------------------------------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT      |          |   100K|   488K|   193   (1)| 00:00:03 |        |      |            |
|   1 |  UPDATE               | T        |       |       |            |          |        |      |            |
|   2 |   PX COORDINATOR      |          |       |       |            |          |        |      |            |
|   3 |    PX SEND QC (RANDOM)| :TQ10000 |   100K|   488K|   193   (1)| 00:00:03 |  Q1,00 | P->S | QC (RAND)  |
|   4 |     PX BLOCK ITERATOR |          |   100K|   488K|   193   (1)| 00:00:03 |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T        |   100K|   488K|   193   (1)| 00:00:03 |  Q1,00 | PCWP |            |
---------------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.06
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.25
当并行查询和并行DML语句都启用时,更新部分也可以并行地执行
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION ENABLE PARALLEL QUERY;
会话已更改。
已用时间:  00: 00: 00.00
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION ENABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] TABLE t PARALLEL 2;
表已更改。
已用时间:  00: 00: 00.04
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR UPDATE t SET id = id + 1;
已解释。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2037160838
---------------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
---------------------------------------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT      |          |   100K|   488K|   193   (1)| 00:00:03 |        |      |            |
|   1 |  PX COORDINATOR       |          |       |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM) | :TQ10000 |   100K|   488K|   193   (1)| 00:00:03 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    UPDATE             | T        |       |       |            |          |  Q1,00 | PCWP |            |
|   4 |     PX BLOCK ITERATOR |          |   100K|   488K|   193   (1)| 00:00:03 |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T        |   100K|   488K|   193   (1)| 00:00:03 |  Q1,00 | PCWP |            |
---------------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.06
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.01
并行删除测试
禁用并行DML,则删除部分无法并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.01
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR DELETE t;
已解释。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 276543898
-------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-------------------------------------------------------------------------------------------------------
|   0 | DELETE STATEMENT      |          |   100K|   193   (1)| 00:00:03 |        |      |            |
|   1 |  DELETE               | T        |       |            |          |        |      |            |
|   2 |   PX COORDINATOR      |          |       |            |          |        |      |            |
|   3 |    PX SEND QC (RANDOM)| :TQ10000 |   100K|   193   (1)| 00:00:03 |  Q1,00 | P->S | QC (RAND)  |
|   4 |     PX BLOCK ITERATOR |          |   100K|   193   (1)| 00:00:03 |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T        |   100K|   193   (1)| 00:00:03 |  Q1,00 | PCWP |            |
-------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.11
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.03
启用并行DML,则删除部分可以执行并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION FORCE PARALLEL DML PARALLEL 4;
会话已更改。
已用时间:  00: 00: 00.01
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR DELETE t;
已解释。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1346169614
-------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-------------------------------------------------------------------------------------------------------
|   0 | DELETE STATEMENT      |          |   100K|    97   (2)| 00:00:02 |        |      |            |
|   1 |  PX COORDINATOR       |          |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM) | :TQ10000 |   100K|    97   (2)| 00:00:02 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    DELETE             | T        |       |            |          |  Q1,00 | PCWP |            |
|   4 |     PX BLOCK ITERATOR |          |   100K|    97   (2)| 00:00:02 |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T        |   100K|    97   (2)| 00:00:02 |  Q1,00 | PCWP |            |
-------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.06
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.20
[email=LIBIN@orac]LIBIN@orac[/email]>
禁用并行DML,即使加parallel注释删除部分也无法并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION DISABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.00
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR DELETE /*+ parallel(t 4) */ t;
已解释。
已用时间:  00: 00: 00.03
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 276543898
-------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-------------------------------------------------------------------------------------------------------
|   0 | DELETE STATEMENT      |          |   100K|    97   (2)| 00:00:02 |        |      |            |
|   1 |  DELETE               | T        |       |            |          |        |      |            |
|   2 |   PX COORDINATOR      |          |       |            |          |        |      |            |
|   3 |    PX SEND QC (RANDOM)| :TQ10000 |   100K|    97   (2)| 00:00:02 |  Q1,00 | P->S | QC (RAND)  |
|   4 |     PX BLOCK ITERATOR |          |   100K|    97   (2)| 00:00:02 |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T        |   100K|    97   (2)| 00:00:02 |  Q1,00 | PCWP |            |
-------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.11
[email=LIBIN@orac>ROLLBACK]LIBIN@orac>ROLLBACK[/email];
回退已完成。
已用时间:  00: 00: 00.03
启用并行DML,加parallel注释删除部分可以并行操作
[email=LIBIN@orac>ALTER]LIBIN@orac>ALTER[/email] SESSION ENABLE PARALLEL DML;
会话已更改。
已用时间:  00: 00: 00.01
[email=LIBIN@orac>EXPLAIN]LIBIN@orac>EXPLAIN[/email] PLAN FOR DELETE /*+ parallel(t 4) */ t;
已解释。
已用时间:  00: 00: 00.07
[email=LIBIN@orac>SELECT]LIBIN@orac>SELECT[/email] * FROM table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1346169614
-------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-------------------------------------------------------------------------------------------------------
|   0 | DELETE STATEMENT      |          |   100K|    97   (2)| 00:00:02 |        |      |            |
|   1 |  PX COORDINATOR       |          |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM) | :TQ10000 |   100K|    97   (2)| 00:00:02 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    DELETE             | T        |       |            |          |  Q1,00 | PCWP |            |
|   4 |     PX BLOCK ITERATOR |          |   100K|    97   (2)| 00:00:02 |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T        |   100K|    97   (2)| 00:00:02 |  Q1,00 | PCWP |            |
-------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.06
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表