Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1341974
  • 博文数量: 169
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3800
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-30 13:00
个人简介

About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc

文章分类

全部博文(169)

文章存档

2024年(24)

2023年(28)

2022年(43)

2020年(62)

2014年(3)

2013年(9)

分类: Oracle

2023-05-07 22:39:43

1)Oracle 的并行执行是一种分而治之的方法. 执行一个 SQL 时, 分配多个并行进程同时执行数据扫描,连接以及聚合等操作, 使用更多的资源(CPU,IO等), 得到更快的 SQL 响应时间。并行执行是充分利用硬件资源,处理大量数据时的核心技术。

2)并行使用场景:OLAP系统、OLTP里的诸如CREATE INDEX的操作,加速创建索引,在OLTP系统中要慎用。

3)什么时候会用到并行:DDL(CREATE INDEX、CREATE TABLE AS等)、DML(UPDATE,DELETE,MERGE,INSERT INTO SELECT等)、SELECT(FULL TABLE SCAN,INDEX FAST FULL SCAN,PARTITIONED INDEX RANGE SCAN等)


看下面的例子:
并行操作的执行计划:


1)TQ(Table queue) 的编号代表了并行执行计划中, 数据分发的顺序。

2)PQ Distribute 列: 数据的分发方式.。

3)In-out 列: 表明数据的流动和分发。

PCWC: parallel combine with child.

PCWP: parallel combine with parent.

P->P: parallel to parallel.

P->S: parallel to Serial

并行操作写法注意点:


1)只写PARALLEL(sales 8)则customers部分没有并行,从而影响整体并行效率。

2)建议并行写成PARALLEL(8),不要带别名,则sales和customers都为DOP=8的并行。

对于并行DML:

首先需要执行:

ALTER SESSION FORCE PARALLEL DML或ALTER SESSION ENABLE PARALLEL DML开启并行DML

然后执行DML语句。


对于INSERT INTO SELECT 的并行操作需要注意:写别名必须INSERT和SELECT部分都写,建议不要写别名则都并行

注意表和索引的并行度要设为1,以防自动并行导致性能问题。


阅读(6343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~