ORACLE并行SQL执行PARALLEL

执行多个SQL语句时可以通过配置并行执行来提高执行效率.

几个基本概念:

1). 并行度(Degree of parallelism):
单个操作所关联的并行执行服务器个数. 它有以下条件决定:
1. 在执行语句中的PARALLEL子句
2. 对于一个查询的对象,在创建或更改该对象时使用了PARALLEL关键字
3. PARALLEL hint
4. 有数据库决定的默认值

2). 并行执行服务器(Parallel Execution Servers)
当数据库实例启动后,数据库创建一个并行执行服务器池以供并行操作. 一个叫parallel execution coordinator的进程负责分配Parallel Execution Servers并协调把并行执行的结果返回给用户.

默认情况下Parallel Execution Servers处于开启状态,因为参数parallel_max_servers默认的大于0.

SQL> show parameter parallel_max_servers

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
parallel_max_servers                 integer     10


配置并行执行:
可以通过ALTER SESSION子句来控制并行执行.

1). 关闭并行执行特性
ALTER SESSION DISABLE PARALLEL DML|DDL|QUERY
执行该语句后,所有随后的DML, DDL 和查询操作都将是序列化,而不管该对象在创建时是否有指定了PARALLEL关键字, 也忽略执行语句中指定的PARALLEL关键字.

SQL> alter session disable parallel ddl;

Session altered.

2). 开启并行执行特性
ALTER SESSION ENABLE PARALLEL DML|DDL|QUERY
执行该语句后,随后的包含PARALLEL关键字或hint的执行语句都将并行执行.
默认情况下,并行执行特性对DDL和查询语句是开启.
SQL> alter session enable parallel dml;

Session altered.

3). 强制并行执行SQL语句
ALTER SESSION FORCE PARALLEL DML|DDL|QUERY
执行该语句可以强制执行并行操作.

SQL> ALTER SESSION FORCE PARALLEL DDL PARALLEL 5;
在建表时指定PARALLEL执行
SQL> CREATE TABLE hr.admin_emp_dept
PARALLEL COMPRESS
AS SELECT * FROM hr.employees
WHERE department_id = 10;
posted @ 2022-07-08 16:12  南国之恋  阅读(1157)  评论(0编辑  收藏  举报