释义Oracle 11r2中并行执行相关参数

因最近对现场某些服务器进行诊断和调整,用到了这类参数,因此对这类参数做了详尽的查阅和研究,现将该类参数释义如下,以方便同行和自己参考,禁止转载:

1、PARALLEL_ADAPTIVE_MULTI_USER

参数类型 Boolean
默认值 true
可修改性 ALTER SYSTEM
取值范围 true | false


被设置为true时,使自适应算法可用,该算法被设计来改善使用并行的多用户环境的性能。
该算法在查询开始时基于系统负载来自动减少被要求的并行度。实际的并行度基于默认、来自表或hints的并行度,然后除以一个缩减因数。该算法假设系统已经在单用户环境下进行了最优调整。表和hints用默认的并行度。


2、PARALLEL_AUTOMATIC_TUNING
参数类型 Boolean
默认值 false
可修改性 No
取值范围 true | false


注意: PARALLEL_AUTOMATIC_TUNING已经被废弃。保留它仅仅是为了向后兼容。
当该参数设置为true时,Oracle决定控制并行执行的所有参数的默认值。除了设置这个参数,你必须确定系统中目标表的PARALLEL子句。Oracle于是就会自动调整所有后续的并行操作。
如果你在之前的版本里用了并行执行且现在该参数为true,那么你将会因减少了共享池中分配的内存需求,而导致对共享池需求的减少。目前,这些内存会从large pool中分配,如果large_pool_size没被确定,那么,系统会自动计算出来。
作为自动调整的一部分,Oracle将会使parallel_adaptive_multi_user参数可用。如果需要,你也可以修改系统提供的默认值。


3、PARALLEL_DEGREE_LIMIT
参数类型 String
语法 PARALLEL_DEGREE_LIMIT = { CPU | IO | integer }
默认值 CPU
可更改性 ALTER SESSION, ALTER SYSTEM
是否基础 No


在并行度自动调整的情况下,Oracle自动决定一个语句是否并行执行和用什么并行度执行。优化器基于语句的资源需求自动决定一个语句的并行度。
然而,为了确保并行服务器进程不会导致系统过载,优化器会限制使用的并行度。这个限制通过PARALLEL_DEGREE_LIMIT来强制实施。
值:
■ CPU
最大并行度被系统CPU数限制。计算限制的公式为PARALLEL_THREADS_PER_CPU *CPU_COUNT * 可用实例数(默认为簇中打开的所有实例,但也能通过PARALLEL_INSTANCE_GROUP或service定义来约束),这是默认的。
■ IO
优化器能用的最大并行度被系统的IO容量限制。系统总吞吐除以每个进程的最大IO带宽计算出。为了使用该IO设置,你必须在系统上运行DBMS_RESOURCE_MANAGER.CALIBRATE_IO过程。该过程将计算系统总吞吐和单个进程的最大IO带宽。
■ integer
当自动并行度被激活时,该参数的数字值确定优化器为一个SQL语句能选择的最大并行度。PARALLEL_DEGREE_POLICY被设置为AUTO或LIMITED时,自动并行度才可以使用。


4、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
开启自动并行度,语句排队和内存并行执行。


5、PARALLEL_EXECUTION_MESSAGE_SIZE
参数类型 Integer
默认值 Operating system-dependent
可行改性 No
值范围 最小值 2148
       最大值: 32768, 但一些操作系统也许有一个较小值
Oracle RAC 多个实例必须有相同的值


PARALLEL_EXECUTION_MESSAGE_SIZE确定并行执行(前面指并行查询,PDML,并行恢复,复制)所用信息的大小。
在大多数平台上,默认值如下:
■ 16384字节,如果COMPATIBLE被设置为11.2.0或更高
■ 4096字节如果COMPATIBLE被设置为小于11.2.0并且PARALLEL_AUTOMATIC_TUNING被设置为true
■ 2148字节如果COMPATIBLE被设置为小于11.2.0并且PARALLEL_AUTOMATIC_TUNING被设置为false
默认值对大多数应用来说是足够的。值越大,要求共享池越大。较大的值会带来较好的性能,但会消耗较多的内存。因此,复制并不能从增加该值中受益。
注意:当PARALLEL_AUTOMATIC_TUNING被设置为TRUE时,信息缓冲在大池(large pool)中分配。这种情况下,默认值一般是较高的。注意参数PARALLEL_AUTOMATIC_TUNING已经被废弃。


6、PARALLEL_FORCE_LOCAL
参数类型 Boolean
默认值 false
可修改性 ALTER SESSION, ALTER SYSTEM
值范围 true | false
是否基础 No
PARALLEL_FORCE_LOCAL控制Oracle RAC环境下的并行执行。默认情况,被选择执行一个SQL语句的并行服务器进程能在簇中任何或所有Oracle RAC节点上操作。通过设置PARALLEL_FORCE_LOCAL为true,并行服务器进程被限制从而都在查询协调器驻留的同一个Oracle RAC节点上操作(语句被执行的节点上) 。


7、PARALLEL_INSTANCE_GROUP
参数类型 String
语法 PARALLEL_INSTANCE_GROUP = service_name | group_name
默认值 没有默认值;并行执行在所有目前活动的实例上开启
可修改性 ALTER SESSION, ALTER SYSTEM
值范围 任何服务名或任何活动实例上INSTANCE_GROUPS参数中确定的任何组名
Oracle RAC 多个实例能有不同的值


PARALLEL_INSTANCE_GROUP是一个仅能在并行模式确定的参数。和服务或INSTANCE_GROUPS参数一起使用,它使你能限制并行查询的操作到一定的实例数。注意INSTANCE_GROUPS参数已经被废弃。该参数支持Oracle用来产生并行执行进程的并行实例组。如果和服务一起使用,并行操作将仅在服务中确定的实例上产生并行执行进程。如果和INSTANCE GROUPS一起使用,并行操作将仅在那些INSTANCE_GROUPS参数中确定了相匹配的组的实例上产生并行执行进程。
如果被赋予PARALLEL_INSTANCE_GROUP的值是不存在的服务或组名,那么操作将会串行执行。没有并行被使用。


8、PARALLEL_IO_CAP_ENABLED
参数类型 Boolean
默认值 false
可修改性 ALTER SESSION, ALTER SYSTEM
值范围 true | false
是否基础 No
Oracle RAC 多个实例能有不同的值


注意: PARALLEL_IO_CAP_ENABLED参数被废弃了。保留它的目的仅仅是为了向后兼容。PARALLEL_DEGREE_LIMIT参数设置为IO时,可以替代该参数。


PARALLEL_IO_CAP_ENABLED确定Oracle是否覆盖默认并行度一直到IO系统支持的值。该新值基于资源管理器的IO校验包的结果计算得出。如果PARALLEL_IO_CAP_ENABLED被设置为true并且数据库的IO能力已经被校验过,当IO能力不能支撑可用的CPU数时,则Oracle将减少默认并行度。为了校验IO能力,用DBMS_RESOURCE_MANAGER.CALIBRATE_IO过程来测量系统的IO容量。Oracle计算并行度,以便不超过系统的IO容量。


9、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。


如果你把该参数设置的太低,那么,有些查询也许在查询期间没有可用的并行执行进程可用。如果你把该参数设置太高,那么,内存资源在峰值期间也许会短缺,这也会降低性能。


10、PARALLEL_MIN_PERCENT
参数类型 Integer
默认值 0
可修改性 ALTER SESSION
值范围 0 to 100
Oracle RAC 多个实例能有不同的值


PARALLEL_MIN_PERCENT使得你确定并行执行需要并行执行进程数的最小百分比。设置该参数确保除非有足够的资源可用,否则,不会执行并行操作。默认值0意味着没进程的最小百分比被设置。
考虑以下设置:
PARALLEL_MIN_PERCENT = 50
PARALLEL_MIN_SERVERS = 5
PARALLEL_MAX_SERVERS = 10
如果十个并行执行进程中的8个处于繁忙状态,仅两个进程可用。如果接着你提交一个并行度8的查询,那么,最小50%不能被满足。
你能和PARALLEL_ADAPTIVE_MULTI_USER参数一起使用该参数。在多用户环境,一个单独的用户或应用能设置PARALLEL_MIN_PERCENT为一个有足够的系统资源和可接受的并行度被返回时使用的最小值。


11、PARALLEL_MIN_SERVERS
参数类型 Integer
默认值 0
可修改性 ALTER SYSTEM
值范围 0 to value of PARALLEL_MAX_SERVERS
Oracle RAC 多个实例可以有不同的值


注意:该参数使用单实例和RAC环境的并行执行。
PARALLEL_MIN_SERVERS确定实例上并行执行进程的最小数。该值是实例启动时Oracle创建的并行执行进程的数目。


12、PARALLEL_MIN_TIME_THRESHOLD
参数类型 String
语法 PARALLEL_MIN_TIME_THRESHOLD = { AUTO | integer }
默认值 AUTO
可修改性 ALTER SESSION, ALTER SYSTEM
是否基础 No


PARALLEL_MIN_TIME_THRESHOLD确定一个语句被考虑采用自动并行度前一个语句将用的最小执行时间。默认地,它被设置为10s。只有PARALLEL_DEGREE_POLICY被设置为AUTO或LIMITED时,自动并行度才被开启。 


13、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。
注意即使语句排队被激活,所有串行语句(非并行的)将立即执行。


14、PARALLEL_THREADS_PER_CPU
参数类型 Integer
默认值 Operating system-dependent, usually 2
可修改性 ALTER SYSTEM
值范围 Any nonzero number


注意:这个参数适用于单实例和RAC环境的并行执行。
PARALLEL_THREADS_PER_CPU确定实例的默认并行度和并行自适应及负载均衡算法。参数描述并行执行期间每个CPU能处理的并行执行进程或线程数。
默认值和平台有关,且在大多数情况下是足够的。当一个具有代表性的并行查询执行,且机器出现过载现象时,那么,你应该减少该参数的值。如果系统是IO限制的,你应该增加该参数。

原文地址:https://www.cnblogs.com/lhdz_bj/p/8733038.html