oracle 并行学习 (三)ITeyeitjob - 凯发娱乐

oracle 并行学习 (三)ITeyeitjob

2019-02-07 07:35:04 | 作者: 曦晨 | 标签: 时刻,句子,部分 | 浏览: 3430

 

默许状况下并行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句子基本上是由两个操作组成的:首要找到需求

 

被修正的记载,然后修正这些记载。问题是,假如查找记载的部分没有并行地执

 

行,那么修正记载的部分就不能被并行履行。

 测验记载如下:

TABLE t AS
  2  SELECT rownum AS id, rpad(*,100,*) AS pad
  3  FROM dual
  4  CONNECT BY level = 100000;

表已创立。

已用时刻:  00: 00: 12.64

dbms_stats.gather_table_stats(ownname = user, tabname = t)

PL/SQL 进程已成功完结。

已用时刻:  00: 00: 26.32

初始会话等级并行状况为DISABLED

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

在会话等级查询并行状况

SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.01

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
SESSION ENABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.01

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
SESSION FORCE PARALLEL DML PARALLEL 4;

会话已更改。

已用时刻:  00: 00: 00.00

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句子无法进行并行操作
SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.00
PLAN FOR INSERT INTO t SELECT * FROM t;

已解说。

已用时刻:  00: 00: 00.01
* 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
;

回退已完结。
翻开并行DML,INSERT句子能够进行并行操作
SESSION FORCE PARALLEL DML PARALLEL 4;

会话已更改。

已用时刻:  00: 00: 00.01
PLAN FOR INSERT INTO t SELECT * FROM t;

已解说。

已用时刻:  00: 00: 00.03
* 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
;
禁用并行DML形式,在提示句子下操作状况如下,INSERT句子无法进行并行操作
SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.06
PLAN FOR INSERT /*+ parallel(t 4) */ INTO t SELECT /*+ parallel(t 4) */ * FROM t;

已解说。

已用时刻:  00: 00: 00.14
* 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
;

回退已完结。

已用时刻:  00: 00: 00.04
启用并行DML形式,在提示句子下操作状况如下,INSERT句子能够进行并行操作

SESSION FORCE PARALLEL DML PARALLEL 4;

会话已更改。

已用时刻:  00: 00: 00.00
PLAN FOR INSERT /*+ parallel(t 4) */ INTO t SELECT /*+ parallel(t 4) */ * FROM t;

已解说。

已用时刻:  00: 00: 00.21
* 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
;
并行UPDATE操作
禁用DML并行形式,UPDATE 句子无法进行并行操作
SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.03
PLAN FOR UPDATE t SET id = id + 1;

已解说。

已用时刻:  00: 00: 00.01
* 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
;

回退已完结。
翻开DML并行形式,UPDATE 句子能够进行并行操作
SESSION FORCE PARALLEL DML PARALLEL 4;

会话已更改。

已用时刻:  00: 00: 00.00
PLAN FOR UPDATE t SET id = id + 1;

已解说。

已用时刻:  00: 00: 00.07
* 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
;

回退已完结。

已用时刻:  00: 00: 00.06

当并行查询和并行DML句子都禁用时,没有操作被并行化

SESSION DISABLE PARALLEL QUERY;

会话已更改。

已用时刻:  00: 00: 00.03
SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.00
TABLE t PARALLEL 2;

表已更改。

已用时刻:  00: 00: 00.45
PLAN FOR UPDATE t SET id = id + 1;

已解说。

已用时刻:  00: 00: 00.10
* 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
;

回退已完结。

已用时刻:  00: 00: 00.06

当只要并行查询被启用时,DML句子的更新部分没有并行履行

SESSION ENABLE PARALLEL QUERY;

会话已更改。

已用时刻:  00: 00: 00.03
SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.01
TABLE t PARALLEL 2;

表已更改。

已用时刻:  00: 00: 00.21
PLAN FOR UPDATE t SET id = id + 1;

已解说。

已用时刻:  00: 00: 00.03
* 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
;

回退已完结。

已用时刻:  00: 00: 00.25

当并行查询和并行DML句子都启用时,更新部分也能够并行地履行

SESSION ENABLE PARALLEL QUERY;

会话已更改。

已用时刻:  00: 00: 00.00
SESSION ENABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.03
TABLE t PARALLEL 2;

表已更改。

已用时刻:  00: 00: 00.04
PLAN FOR UPDATE t SET id = id + 1;

已解说。

已用时刻:  00: 00: 00.03
* 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
;

回退已完结。

已用时刻:  00: 00: 00.01

并行删去测验
禁用并行DML,则删去部分无法并行操作

SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.01
PLAN FOR DELETE t;

已解说。

已用时刻:  00: 00: 00.03
* 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
;

回退已完结。

已用时刻:  00: 00: 00.03

启用并行DML,则删去部分能够履行并行操作

SESSION FORCE PARALLEL DML PARALLEL 4;

会话已更改。

已用时刻:  00: 00: 00.01
PLAN FOR DELETE t;

已解说。

已用时刻:  00: 00: 00.03
* 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
;

回退已完结。

已用时刻:  00: 00: 00.20

禁用并行DML,即便加parallel注释删去部分也无法并行操作

SESSION DISABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.00
PLAN FOR DELETE /*+ parallel(t 4) */ t;

已解说。

已用时刻:  00: 00: 00.03
* 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
;

回退已完结。

已用时刻:  00: 00: 00.03

启用并行DML,加parallel注释删去部分能够并行操作

SESSION ENABLE PARALLEL DML;

会话已更改。

已用时刻:  00: 00: 00.01
PLAN FOR DELETE /*+ parallel(t 4) */ t;

已解说。

已用时刻:  00: 00: 00.07
* 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

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4

    union联合查询guojizaixian

    成果,数据,排序
  • 5

    TIME快报

    效劳,状况,修正
  • 6

    SQL试题环球

    用户,时刻,信息
  • 7
  • 8
  • 9

    asdfasdfITeye头条

    用户,权限,指令
  • 10

    SQL一招ITeyesohu

    字符串,标题,检索