Oracle Parallel Execution 详解

Oracle Parallel Execution 详解

适用版本:Oracle Database 8i+ / 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

Parallel Execution 并行执行加速大操作[1]:

详细见:Oracle 并行查询 Parallel QueryOracle 并行 DML 与 DDL


2. 并行操作

2.1 查询

- SELECT
- JOIN
- 排序
- 聚合

2.2 DML

- INSERT
- UPDATE
- DELETE
- MERGE

2.3 DDL

- CREATE INDEX
- CREATE TABLE AS SELECT
- ALTER TABLE MOVE

2.4 恢复

- RMAN
- 介质恢复

3. 配置

3.1 参数

ALTER SYSTEM SET parallel_max_servers = 64;
ALTER SYSTEM SET parallel_min_servers = 4;
ALTER SYSTEM SET parallel_degree_policy = AUTO;

3.2 表级

ALTER TABLE sales PARALLEL 4;
ALTER TABLE sales PARALLEL(DEGREE 4);
ALTER TABLE sales NOPARALLEL;

3.3 会话

ALTER SESSION FORCE PARALLEL QUERY PARALLEL 4;
ALTER SESSION FORCE PARALLEL DML PARALLEL 4;
ALTER SESSION ENABLE PARALLEL DML;

4. Hint

4.1 并行

SELECT /*+ PARALLEL(s 4) */ * FROM sales s;
SELECT /*+ PARALLEL(s 4) PARALLEL(e 2) */ * 
FROM sales s JOIN emp e ON ...;

4.2 NOPARALLEL

SELECT /*+ NOPARALLEL */ * FROM sales;

4.3 DML

INSERT /*+ PARALLEL(t 4) */ INTO t 
SELECT /*+ PARALLEL(s 4) */ * FROM s;

5. 并行度

5.1 计算

- CPU 数
- 对象数
- IO
- 自动(AUTO)

5.2 DOP

- Degree of Parallelism
- 服务器进程数
- 2xDOP(生产/消费)

5.3 自动

- parallel_degree_policy=AUTO
- 自动 DOP
- 语句级

6. Parallel Slave

6.1 进程

- PX 服务进程
- 生产者
- 消费者

6.2 池

- parallel_max_servers
- 共享
- 监控

6.3 查看

SELECT * FROM v$px_process;
SELECT * FROM v$px_process_sysstat;
SELECT * FROM v$px_session;

7. 执行计划

7.1 查看

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
-- PX COORDINATOR
-- PX SEND QC
-- PX BLOCK ITERATOR

7.2 关键字

- PX COORDINATOR:协调
- PX SEND:发送
- PX RECEIVE:接收
- PX BLOCK ITERATOR:块迭代

8. In-Memory Parallel

8.1 原理

- parallel_degree_policy=AUTO
- 数据缓存
- 跨节点

8.2 优势

- 缓存
- RAC
- 性能

9. 应用场景

9.1 大表

- 全表扫描
- 并行
- 加速

9.2 索引创建

- 大索引
- 并行
- 加速

9.3 批处理

- 大量数据
- 并行
- 性能

10. 性能

10.1 加速

- DOP
- CPU
- IO

10.2 限制

- CPU
- IO
- 内存

10.3 监控

SELECT * FROM v$sysstat WHERE name LIKE 'Parallel%';

11. 常见问题

11.1 未并行

- Hint
- 表级
- 检查

11.2 资源

- CPU 不足
- 串行化
- 监控

11.3 性能

- DOP 合理
- 测试
- 优化

12. 最佳实践

  1. 大操作:并行
  2. AUTO:自动
  3. DOP:合理
  4. 监控:资源
  5. 测试:性能
  6. Hint:精确
  7. 低峰:批处理
  8. 文档:配置
  9. 演练:定期
  10. 资源:评估

13. 参考资料

[1] Oracle Database VLDB and Partitioning Guide 19c, “Parallel Execution” https://docs.oracle.com/en/database/oracle/oracle-database/19/vldbg/