扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
直接用hint即可。例如:
成都创新互联主要企业基础官网建设,电商平台建设,移动手机平台,微信平台小程序开发等一系列专为中小企业定制网站建设产品体系;应对中小企业在互联网运营的各种问题,为中小企业在互联网的运营中保驾护航。
select /*+parallel(o2)*/* from t_objects o
其中o为要开启并行的表的别名,2为并行度。
不过不一定会提升效率,一般查询中使用parallel的情景如下:
需要大量的 表的扫描、连接或者分区索引扫描。
聚合操作(计数)。
select /*+ parallel(a,4)*/ col1 from tab;
表示查询表tab的字段col1,4个进程并行查询,前提是必须要有4个CPU才有效,否则性能会比不加并发还低
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的过程当中才可以。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流