本节介绍的并行执行功能可用于Oracle数据库企业版
本节介绍如何管理SQL语句的并行处理。在此配置中,Oracle数据库可以将处理SQL语句的工作分为多个并行进程。
许多SQL语句的执行可以并行化。并行度是可以与单个操作相关联的并行执行服务器的数量。并行度由以下任何因素决定:
- 声明中的PARALLEL子句
- 对于查询中引用的对象,创建或更改对象时使用的PARALLEL子句
- 插入语句中的并行提示
- 由数据库确定的默认值
“并行化表创建”中包含使用并行SQL执行的示例。
本节包含以下主题:
- 关于并行执行服务器
- 更改会话的并行执行
有关使用并行提示的信息,请参阅“Oracle数据库性能调整指南”
关于并行执行服务器
实例启动时,Oracle数据库将创建一个并行执行服务器池,可用于任何并行操作。称为并行执行协调器的进程调度并行执行服务器池的执行,并协调从所有这些并行执行服务器向用户发回结果。
并行执行服务器默认启用,因为默认情况下,PARALLEL_MAX_SERVERS初始化参数的值设置为> 0。这些进程可供各种可利用并行性的Oracle数据库功能使用。相关的初始化参数由数据库为大多数用户调整,但您可以根据需要更改它们以适合您的环境。为了便于调整,一些参数可以动态改变。
并行性可用于多种功能,包括事务恢复,复制和SQL执行。在执行并行SQL的情况下,本书中讨论的主题并行服务器进程在整个执行阶段仍然与语句相关联。当完整处理语句时,这些进程可用于处理其他语句。
Oracle数据库VLDB和分区指南获取有关使用并行执行的更多信息
更改会话的并行执行
您可以使用ALTER SESSION语句控制会话的并行SQL执行。
禁用并行SQL执行
使用ALTER SESSION DISABLE PARALLEL DML | DDL | QUERY语句禁用并行SQL执行。在发布这样的语句后,所有后续的DML(INSERT,UPDATE,DELETE),DDL(CREATE,ALTER)或者查询(SELECT)操作都会连续执行。它们将被连续执行,而不管与所涉及的表或索引有关的任何并行属性。但是,带有PARALLEL提示的语句会覆盖会话设置。
以下语句禁用并行DDL操作:
ALTER SESSION DISABLE PARALLEL DDL;
启用并行SQL执行
使用ALTER SESSION ENABLE PARALLEL DML | DDL | QUERY语句启用并行SQL执行。随后,当PARALLEL子句或并行提示与语句关联时,那些DML,DDL或查询语句将并行执行。默认情况下,为DDL和查询语句启用并行执行。
只有在您特别发出ALTER SESSION语句以启用并行DML时,才能对DML语句进行并行处理:
ALTER SESSION ENABLE PARALLEL DML;
强制并行SQL执行
您可以使用ALTER SESSION FORCE PARALLEL DML | DDL | QUERY语句强制执行并行执行的所有后续DML,DDL或查询语句。此外,您可以强制执行特定程度的并行性,从而覆盖与后续语句关联的任何PARALLEL子句。如果您在此声明中没有指定一定的并行度,则使用默认的并行度。强制并行执行将覆盖SQL语句中的任何并行提示。
以下语句强制后续语句的并行执行,并将最重要的并行度设置为5:
ALTER SESSION FORCE PARALLEL DDL PARALLEL 5;
参考资料
https://docs.oracle.com/cd/E11882_01/server.112/e25494/manproc.htm#ADMIN11186