大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Oracle试图自动化系统配置来使并行操作的性能最大化。然而,仍然有许多手工调整的空间,我们可以调整数据库,优化SQL并行性能。
为岢岚等地区用户提供了全套网页设计制作服务,及岢岚网站建设行业解决方案。主营业务为网站设计、网站制作、岢岚网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
判断并行度
合适的并行度DOP对于良好的并行性能很关键。Oracle会按如下方式设定DOP:
1、如果指定或请求了并行执行,但是没有指定DOP,默认DOP会设置为该系统上CPU内核数量的两倍。对于RAC系统,DOP值会是整个集群内核数量的两倍。默认值是由配置参数“PARALLEL_ THREADS_PER_CPU”控制的。
2、对于Oracle 11g R2之后的版本,如果“ PARALLEL_DEGREE_POLICY”被设置为“AUTO”,Oracle将根据被执行的运行性质和涉及对象的大小自动调整DOP值。
3、如果“PARALLEL_ADAPTIVE_MULTI_USER”被设置为“TRUE”,Oracle将基于该系统的整个负载调整DOP。当系统承受更重的负载时,DOP值将会减少。
4、在Oracle 11g或者更高版本中,如果“PARALLEL_IO_CAP ”被设置为TRUE,Oracle将把DOP限制为IO子系统可以支持的值。这些IO子系统限制可以通过“DBMS_RESOURCE_ MANAGER.CALIBRATE_IO”存储过程计算。
5、DOP可以被指定到表或者索引一级,可以通过在“CREATE TABLE”,“CREATE INDEX”,“ALTER TABLE”或者“ALTER INDEX”中使用“PARALLEL ”从句来实现。
6、“PARALLEL ”关键字可以被用来指定某个查询中指定表的DOP。
7、不管任何其它设置,DOP不能超过“PARALLEL_MAX_SERVERS”可以支持的数量。对于大部分SQL语句,服务器数量需要是请求DOP的两倍。
正如我们可以看到的,超过优化点增减DOP会导致进一步性能提升的失败。然而,超过最佳优化限制强行增加DOP值会对整个系统性能带来重大的负面影响。尽管被并行化的SQL可能不会随着DOP的增加而降低,但是该系统的负载会持续增加,而且会引起其它并发运行的SQL要遭受响应时间降低的影响。
当我们达到最优DOP点时(该系统中的值大约是8),查询时间的减少变的平缓了。然而,其它会话在等待CPU可用上花费的时间会持续增长。其它等待访问CPU的会话将需要继续等待,这会导致响应时间变慢。
A1 A2 A3也是存储过程吗? job其实上也只是分别调用这几个过程来执行,而不是靠执行一个A就可以让所有A1 2 3 4 并行执行的。 如果A1 2 3 4都是需要参数的话,那么你也只有用A分开给每一个都传递参数,否则的话也是不能并行执行的。 例如:
declare n number
begin
dbms_job.submit('a1;a2;a3;a4',sysdate,'trunc(sysdate+1)');
commit;
end;
/
这样会让a1 2 3 4分别同时执行,你可以做一个改动就是让a给a*传递参数的动作 直接加入到a 1 2 3 4的过程当中才可以。
select /*+ parallel(a,4)*/ col1 from tab;
表示查询表tab的字段col1,4个进程并行查询,前提是必须要有4个CPU才有效,否则性能会比不加并发还低
一般表数据量比较大(超过100万)时,可以使用parallel强制启动并行度来提升查询速度
用法:/*+parallel(table_short_name,cash_number)*/
可以加到insert、delete、update、select的后面来使用
比如:select /*+paralle(t,32)*/ from table t; table_short_name使用别名,Parallel后面的数字,越大,执行效率越高,一般用8,10,12,16,32。不过,数值越大,占用的资源也会相对增大。如果在查询where后的条件有加索引查询效率会大大提高。
expdp并行设置的结果无非3种:变得更好、没有变化、变得更差
效率是否得到提高,并不取决于你设置了多碉堡的参数,参数和参数值是否合适方为根本
并行需要成本,因为并行之前需对服务器资源综合权衡,计算并行,分配任务
并行设置是门艺术,因为PARALLEL经常是要跟FILESIZE,DUMPFILE一起考虑
下面是官方文档给的一个并行优化实例:
expdp hr/hr FULL=y DUMPFILE=dpump_dir1:full1%U.dmp, dpump_dir2:full2%U.dmp
FILESIZE=2G PARALLEL=3 LOGFILE=dpump_dir1:expfull.log JOB_NAME=expfull
另外,并行度的设置不应该超过CPU数量的2倍
sys@ORCL show parameter cpu