Home >Database >Mysql Tutorial >Oracle 并行查询

Oracle 并行查询

WBOY
WBOYOriginal
2016-06-07 17:31:19970browse

所谓并行执行,是指能够将一个大型串行任务(任何DML,一般的DDL)物理的划分为叫多个小的部分,这些较小的部分可以同时得到处理

Oracle  并行执行

所谓并行执行,是指能够将一个大型串行任务(任何DML,,一般的DDL)物理的划分为叫多个小的部分,这些较小的部分可以同时得到处理。

何时使用并行执行:

1、必须有一个非常大的任务

2、必须有充足的资源(CPU,I/O,MEMORY)

并行查询

并行查询允许将一个SQL SELECT 语句划分为多个较小的查询,每个查询并发的运行。最后将每个较小查询得到的结果组合起来,得到最终结果。

启动并行查询几种方式:

1、在查询中使用一个hint提示:select /*+ parallel(4)  */  count(*)  from test_a ;---指定一个并行度为4的并行查询。

2、利用alter table修改表:

  • alter table test_a parallel 4;--告诉oracle,在创建这个表的执行计划时,使用并行度4
  • alter table test_a parallel;--告诉oracel,“请考虑并行执行。”oracle 会根据系统工作负载和查询本身来确定适当的并行度。资源充足,并行度上升,资源稀缺,并行度下降。oracle能动态的增加或减少查询所需要的并发资源量。                ---更喜欢用此种方式启动并行查询。
  • 通过一个并行查询的执行计划观察并行查询

    SQL> alter table test_a parallel;

    Table altered.

    Elapsed: 00:00:00.05
    SQL> select  count(*) from test_a ;

      COUNT(*)
    ----------
        602704

    Elapsed: 00:00:00.21

    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 2663325361

    --------------------------------------------------------------------------------------------------------
    | Id  | Operation              | Name    | Rows  | Cost (%CPU)| Time    |    TQ  |IN-OUT| PQ Distrib |
    --------------------------------------------------------------------------------------------------------
    |  0 | SELECT STATEMENT      |          |    1 |  1290  (1)| 00:00:16 |        |      |            |
    |  1 |  SORT AGGREGATE        |          |    1 |            |          |        |      |            |
    |  2 |  PX COORDINATOR      |          |      |            |          |        |      |            |
    |  3 |    PX SEND QC (RANDOM) | :TQ10000 |    1 |            |          |  Q1,00 | P->S | QC (RAND)  |
    |  4 |    SORT AGGREGATE    |          |    1 |            |          |  Q1,00 | PCWP |            |
    |  5 |      PX BLOCK ITERATOR |          |  602K|  1290  (1)| 00:00:16 |  Q1,00 | PCWC |            |
    |  6 |      TABLE ACCESS FULL| TEST_A  |  602K|  1290  (1)| 00:00:16 |  Q1,00 | PCWP |            |
    --------------------------------------------------------------------------------------------------------

    接下来请看第2页精彩内容

    推荐阅读:

    Oracle DML流程

    PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决

    MySQL常用DDL、DML、DCL语言整理(附样例)

    Oracle基本事务和ForAll执行批量DML练习

    Oracle DML语句(insert,update,delete) 回滚开销估算

    linux

    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn