[Q] 请教高手,关于参数PARALLEL_MAX_SERVERS的设置?

[复制链接]
查看11 | 回复9 | 2014-2-19 11:55:14 | 显示全部楼层 |阅读模式
我现有的数据库9i在IBM690上,有8个CPU,18G内存,在库中建表时大多带有parallel选项.现在通过spotlight监控界面发现Parallel Query项告警,其提示我增加PARALLEL_MAX_SERVERS.
在安装数据库时,PARALLEL_MAX_SERVERS=5(Oracle自动设置).
现在的问题是,我共查找到三个计算PARALLEL_MAX_SERVERS的方法,这三个方案结果差异较大:
1. PARALLEL_MAX_SERVERS < CPU数;
2. PARALLEL_MAX_SERVERS < 10*CPU
3. PARALLEL_MAX_SERVERS =2 * CPUs * number_of_concurrent_users
并且建议同时设置parallel_automatic_tuning=TRUE,parallel_adaptive_multi_user=TRUE
有没有设置过这个参数的高手,这几个参数应该如何设置?
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层

回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
如果你的应用是OLTP建议不要采用并行.
你的数据库版本?平台?
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
数据库版本是9.0.2.4,平台是AIX,是电信应用,因为数据量的关系所以表是分区表,在建表中使用了parallel选项.
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
库中的操作多为DML和select
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
我再顶
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
1)parallell_automatic_tuning 设成true时,则改变了一些px相关的default参数值
parallel_execution_message_size =4k
parallel_max_servers=cpus * parallel_threads_per_cpu * 4 * 5
parallel_threads_per_cpu parameter ( default OS-dependent, usually 2 )
processes=if processes < parallel_max_servers The processes parameter is increased
等等。
PARALLEL_ADAPTIVE_MULTI_USER=true,则采用了自适应算法,第一个进入的用户使用全部的并行度,然后第二个进入的用一部份,并且减少第一个用户的使用量,以此类退,用户越多,各用户所分配的并发度越少.
2)不用建表和索引的时候全部都用parallel的,可能会产生不必要的系统竞争或者是os的context switch. 可以使用hint来使用parallel query.
3)parallel server execution pool是由PARALLEL_MIN_SERVERS, PARALLEL_MAX_SERVERS,PARALLEL_MIN_PERCENT 三个参数决定的.
eg.1 Parallel_max_servers=8, parallel_min_servers=4, parallel_min_percent=50
假设现在有6个parallel query slave processes正在工作。这时,又有一个带有并发度6查询进入系统。但此时Oracle只能再产生两个process. 而且parallel_min_percent=50,Oracle也不可能产生3个processes( 6*50%=3). 然后Oracle 报错ORA-12827.
eg2. Parallel_max_servers=8, parallel_min_servers=4,parallel_min_percent=0
假设现在有8个parallel query slave processes正在工作。则因为parallel_min_percent=0, 则任何新的并发查询则以串行的方式运行,则系统会很慢。

如果你设置了parallel_automatic_tuning,则注意parallel_max_servers的default值被改变了。
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
Hi. The DEFAULT degree of parallelism is used when you specify to parallelize an operation but you do not specify a degree of parallelism either in a hint or in the definition of the table or index. Therefore, to set parallelism to the DEFAULT for a table, you would specify PARALLEL, but not specify a degree when creating the table. For example:
create table p (col1 number) parallel;
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
cpu_count*Parallel_threads_per_cpu*(a reduction factor)
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
这个参数值的推荐设置是:
2 x DOP x NUMBER_OF_CONCURRENT_USERS
DOP的意思是:degree of parallelism,就是并行度
如果你设置PARALLEL_AUTOMATIC_TUNING =FALSE,那么你应该设置PARALLEL_MAX_SERVERS 参数,否则不需要设置
默认的PARALLEL_MAX_SERVERS值是5
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行