1.PARALLEL_DEGREE_POLICY
参数类型 String
语法 PARALLEL_DEGREE_POLICY = { MANUAL | LIMITED | AUTO }
默认值 MANUAL
可修改性 ALTER SESSION, ALTER SYSTEM
是否基础 No
PARALLEL_DEGREE_POLICY确定是否开启自动并行度,语句排队和内存并行执行。
值:
注意:如果一个PARALLEL hint在语句级被使用,无论PARALLEL_DEGREE_POLICY值设置成什么,自动并行度都将被开启。
■ MANUAL
关闭自动并行度,语句排队和内存并行执行。这恢复并行执行到11.2之前的行为。这是默认设置。
■ LIMITED
对某些语句开启自动并行执行,但语句排队和内存并行执行被关闭。自动并行度仅仅适用那些存取显式用PARALELL语句标示默认并行度的表或索引的语句。并不存取这些被显式标示默认并行度的表或索引的语句将保持手工(MANUAL)行为。
■ AUTO
Oracle会根据表的大小和操作类型,自动选择并行度。* 如果要求的并行度无法到达, 比如当前所有的parallel server都很繁忙。Oracle这时候,不会执行该语句,会等待直到获得足够的parallel slave, 而不会选择降低并行度或者线型执行。
2.PARALLEL_MAX_SERVERS
参数类型 Integer
默认值 PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 5
可行改性 ALTER SYSTEM
值范围 0 to 3600
Oracle RAC 多个实例可以有不同值
注意:该参数适用于单实例和RAC模式的并行执行。
PARALLEL_MAX_SERVERS确定一个实例并行执行进程和并行恢复进程的最大数。当需求增加时,Oracle数据库从实例启动时的进程数增加到该参数值。公式中,实例上赋予正在使用的concurrent_parallel_users的值和内存管理设置相关。如果自动内存管理被关闭(手工模式),那么concurrent_parallel_users为1。如果PGA自动内存管理被开启,那么concurrent_parallel_users的值为2.如果除了PGA自动内存管理,全局内存管理或SGA内存目标也被使用,那么,concurrent_parallel_users为4。
如果你把该参数设置的太低,那么,有些查询也许在查询期间没有可用的并行执行进程可用。如果你把该参数设置太高,那么,内存资源在峰值期间也许会短缺,这也会降低性能。
3.PARALLEL_SERVERS_TARGET
参数类型 Integer
默认值 PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 2
可修改性 ALTER SYSTEM
值范围 0 to PARALLEL_MAX_SERVERS
是否基础 No
PARALLEL_SERVERS_TARGET确定语句排队被采用前运行一个语句允许的并行服务器进程数。当参数PARALLEL_DEGREE_POLICY被设置为AUTO,且必需的并行服务器进程不可用时,Oracle将排队要求并行执行的SQL语句。一旦系统上活的并行服务器进程数等于PARALLEL_SERVERS_TARGETS,语句排队将开始。默认地,PARALLEL_SERVERS_TARGETS被设置低于系统上允许的并行服务进程最大数(PARALLEL_MAX_SERVERS),以确保每个并行语句将获得需要的并行服务资源,同时,也避免因为过多的并行服务器进程数而导致系统过载。
一个实例上运行的默认并行度的并发并行用户和内存管理设置相关。如果自动内存管理被关闭(手工模式),那么,并发并行用户数为1.如果PGA自动内存管理被开启,并发并行用户为2。如果除了PGA内存自动管理,还有全局内存管理和SGA内存目标被使用,那么,并发并行用户数为4。
注意即使语句排队被激活,所有串行语句(非并行的)将立即执行。