首页 > Linux操作系统 > Linux操作系统 > ORACLE的并行处理之配置
--配置
parallel_min_servers:实例启动时从属进程的数量,默认为0,
parallel_max_servers: 池中从属进程的量大数。一般设为CPU 的CORE个数(cpu_count参数值)8至10倍
--显示池的信息
SELECT *
FROM v$px_process_sysstat
WHERE statistic LIKE 'Servers%';
--使用large_pool来为从属进程分配内存
1. 在9i中设置 parallel_automatic_tuning=true
2. 在10g中设置 sga_target 非零。
3. 在11g中设置了memory_target 非零。
注:大池是专门用来存放不可重遥的内存结构的。如果不启动大池,会从共享池(shared pool)中来分配这部分内存。
显然在大池分配并行内存比在共享池中合适得多。
large_pool_size >= parallel_max_servers^2 * parallel_execution_message_size*3;
--表和索引的并行度
1.在创建时设置
create table t (id number,pad varchar2(100)) parallel 4;
create index t_ind on t(in) parallel 4;
2.创建后修改并行度
alter table t parallel 4;
alter index t_ind parallel 4;
3.禁用并行处理
alter table t parallel 1;
alter index i parallel 1;
或
alter table t noparallel;
alter index t noparallel;
注:dba_tables 表的DEGREE字段记录了表的并行度
--当并行度请求得不到满足时的处理。
当池中的从属进程数不能满足并行度的要求时 有两种可选性:一是降级处理,二是的返回一个错误(ORA-12827)。
通过参数 parallel_min_percent来设置。默认为 "0"
a.等于 "0" 时:永远不返回错误。 池中取尽可能多的从属进程。进行处理,如果所剩的从属进程数小于2,就相当于串行执行
b.在 "1"~"99" 时:按比例降级 池中的从属进程数据必需要大于 并行度*(parallel_min_percent/100) 的个数,不然返回ORA-12827
c.等于100 时:永远不降级,池中的从属进程数不能满足并行度的要求时 返回ORA-12827.
parallel_adaptive_multi_user 也会影响到服务器进程的从属进程数。
FALSE: 如果池没有耗尽,请求的从属进程数会根据parallel_min_percent设置原则来分配从属进程数。9i的默认值。
TRUE : 随着从属进程的数量的增加,限使池中有足够的从属进程数,并行度也会被自动降级。10g的默认值。
因为设置true时不能发挥池的最大性,同时可能造成语句的串行处理所以建议将
parallel_adaptive_multi_user设为false
--查询并行的降级统计信息
SQL>SELECT name,value
from v$sysstat
where name like 'Parallel operations%';
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22782597/viewspace-622714/ ,如需转载,请注明出处,否则将追究法律责任。