并行查询允许将一个SQL SELECT语句划分为多个较小的查询,每个部分的查询并发地运行,然后会将各个部分的结果组合起来,提供最终的答案。
我们来看一个例子:
1. 执行如下一串SQL语句,创建一个叫big_table的表,期间会让你录入 1的值(想要往big_table表里面插入多少行数据),我录入的是1000万行。
create table big_table
as
select rownum id, a.*
from all_objects a
where 1=0
/
alter table big_table nologging;
declare
l_cnt number;
l_rows number := &1;
begin
insert /*+ append */
into big_table
select rownum, a.*
from all_objects a;
l_cnt := sql%rowcount;
commit;
while (l_cnt < l_rows)
loop
insert /*+ APPEND */ into big_table
select rownum+l_cnt,
OWNER, OBJECT_NAME, SUBOBJECT_NAME,
OBJECT_ID, DATA_OBJECT_ID,
OBJECT_TYPE, CREATED, LAST_DDL_TIME,
TIMESTAMP, STATUS, TEMPORARY,
GENERATED, SECONDARY
from big_table
where rownum <= l_rows-l_cnt;
l_cnt := l_cnt + sql%rowcount;
commit;
end loop;
end;
/
alter table big_table add constraint
big_table_pk primary key(id)
/
begin
dbms_stats.gather_table_stats
( ownname => user,
tabname => 'BIG_TABLE',
method_opt => 'for all indexed columns',
cascade => TRUE );
end;
/
select count(*) from big_table;
2. 查询 非并行执行态,select count(status) from big_table 所耗用时间。
explain plan for
select count(status) from big_table;
select * from table(dbms_xplan.display);
我电脑上的执行结果如下图所示,耗用时间是6分半钟。
3. 修改表允许并行执行,重新执行解析计划
alter table big_table parallel;
explain plan for
select count(status) from big_table;
select * from table(dbms_xplan.display);
我电脑上的执行结果如下图所示,耗时1分40。
如果自下而上地读这个计划(从ID=6开始),它显示了并行执行的具体步骤。全表扫描会分解为多个较小的扫描(第5步)。每个扫描汇总其COUNT(STATUS)值(第4步)。这些子结果将传送给并行查询协调器(第2步和第3步),它会进一步汇总这些结果(第1步),并输出答案。
- 大小: 11.8 KB
- 大小: 14.7 KB
分享到:
相关推荐
Oracle跟上了硬件发展的步伐,提供了很多面向多...在Oracle环境中实现并行性最好的方法之一是使用Oracle并行查询(OPQ)。我将讨论OPQ是如何工作的和怎样用它来提升大的全表检索的响应时间以及调用并行事务回滚等等。
oracle10g 并行查询的优化讲解,讲解的比较透彻全面
用Oracle并行查询发挥多CPU的威力定义.pdf
用Oracle并行查询发挥多CPU的威力
Oracle并行执行
ORACLE并行SQL指南,讲述了oracle中通过编写并行sql来提高数据库的执行效率和应用的响应速度
oracle中的并行处理,还是值得一看的!
在双机集群环境下Oracle并行服务的实现析,大家一起学习!
并行处理就是利用多个CPU和I/O资源来执行单个数据库操作。尽管现在每个主要的数据库供应商都声称可以提供并行处理能力,但每个供应商所提供的体系结构...本文还讲述Oracle并行处理组件与其它关键业务组件的无缝集成。
oracle并行,具体描述的是ORACL并行的原理,以及应用,英文文献
Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1、错误描述 ORA-12801: 并行查询服务器P007中发出错误信号 ORA-01722:无效...
Oracle高级功能 并行处理和多处理器计算机体系结构介绍 串行处理和并行处理 第一节 并行服务器 第二节 并行查询选件
主要介绍了Oracle并行操作的并行查询技术,需要的朋友可以参考下
oracle的Parallel_并行技术案例详解
查询ORACLE最大的并发数,在出现性能等问题时可以用到。
ORACLE数据库优化之SQL语句的并行处理.pdf
Oracle的解决方案当然更为合理,在抽象意义...在执行Oracle查询的时候无须担心较长的查询操作会锁定重要的交易。但是,在两种数据库同时支持海量用户的情况下也很难证明Oracle是否就能真正实现具体条件下的数据一致性。
Oracle并行服务的原理和实现.pdf