Oracle并行原理及示例

并行:把一个工作分成几份,分给不同进程同时进行处理。进程层面

并发:多个会话同时进行访问,就是通常所说并发数。会话层面

数据库版本

LEO1@LEO1> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

一给出一个2表关联的并行查询执行计划,并画出并行数据流图

(1)并行应用场合:

1.OLAP业务模式

首先说明一个我们经常混洗的概念OLAP和数据仓库是不是一个东西。

回答:NO

OLAP是一种业务模式,是一种批量加载批量检索的业务模式,例如在线数据分析系统。

数据仓库:是支撑这种业务模式的底层数据库。

2.系统资源相对空闲

当系统的CPU较多   IO负载不高   内存够大的时候,可以使用并行操作,需要考虑资源平衡。

3.数据符合并行特点

这个说明是什么呢,就是你所操作的数据没有串行化,可以拆分,同时对不同部分数据进行操作,

如果是那种只有计算出前者才能统计后者的流程就不适合使用并行操作了。

例如统计行数就可以使用并行,让10个进程分别统计不同区域的行数最后把结果合并起来返回给用户。

(2)首先明示一下使用并行的3种方法

1.hints     方式临时有效

select /*+ parallel(leo1 2) */ count(*) from leo1;

2.alter table对象级别定义并行直接修改对象属性长期有效

alter table leo1 parallel 4;      定义leo1表并行度为4

3.alter session force parallel      会话级别定义并行会话生命期中有效

alter session force parallel query parallel 4;      强制定义并行度为4

通常/*+ parallel(leo1 4) */

4.并行查询和并行DDL可以无障碍使用并行,如果想使用并行DML,就需要启动会话DML并行功能

alter session enable parallel dml;

(3)实验

现在我们做一个并行操作,分析一下并行执行计划流程,感性的感受一下并行的魅力

LEO1@LEO1> drop table leo1 purge;      清理环境

Table dropped.

LEO1@LEO1> drop table leo2 purge;

Table dropped.

LEO1@LEO1> create table leo1 as select * from dba_objects;      创建leo1表

Table created.

LEO1@LEO1> create table leo2 as select * from leo1;      模拟leo1创建leo2表

Table created.

LEO1@LEO1> execute dbms_stats.gather_table_stats(ownname=>'LEO1',tabname=>'LEO1',

method_opt=>'for all indexed columns size 254');

PL/SQL procedure successfully completed.

LEO1@LEO1> execute dbms_stats.gather_table_stats(ownname=>'LEO1',tabname=>'LEO2',

method_opt=>'for all indexed columns size 254');

PL/SQL procedure successfully completed.

对leo1和leo2进行全表整体分析包括数据分布情况分析(数据倾斜程度,即直方图)

Tips

如果想让n个表关联查询并且都启并行的话,hints如何写呢,请看下面

/*+ parallel(leo1,leo2,2) */对吗?当然不对

/*+ parallel(leo1 leo2,2) */对吗?当然也不对

/*+ parallel(leo1,2) parallel(leo2,2) */  对吗?  Yes  亲们要看好哦

/*+ parallel(leo1,2) parallel(leo2,2) parallel(leo3,2) ……*/   后面同理延续

LEO1@LEO1> select/*+ parallel(leo1,2) parallel(leo2,2) */count(*) from leo1,leo2

where leo1.object_id=leo2.object_id;

Execution Plan      并行度为2执行计划

----------------------------------------------------------

Plan hash value: 2718975204

-------------------------------------------------------------------------------------------------------------------

时间: 2024-10-29 04:24:17

Oracle并行原理及示例的相关文章

oracle并行原理详解(上)

一.简单介绍OLTP和OLAP系统的特点小结 答:OLTP和OLAP是我们大家在日常生产库中最常用到的2种系统,简单的说OLTP是基于多事务短时间片的系统,内存的效率决定了数据库的效率. OLAP是基于大数据集长时间片的系统,SQL执行效率决定了数据库的效率.因此说"并行parallel"技术属于OLAP系统范畴 二.并行技术实现机制和场合 答:并行是相对于串行而言的,一个大的数据块分割成n个小的数据块,同时启动n个进程分别处理n个数据块,最后由并行协调器coordinater整合结果

oracle并行原理详解(下)

Statistics   统计信息 ---------------------------------------------------------- 197  recursive calls 185  db block gets 92  consistent gets 60  physical reads 37128  redo size                    37128 redo量 664  bytes sent via SQL*Net to client 571  byt

用Oracle并行查询发挥多CPU的威力

在一个单独的服务器中安装更多的CPU成为目前的一个趋势.使用对称多处理服务器(SMP)的情况下,一个Oracle服务器拥有8个.16个或32个CPU以及几吉比特RAM的SGA都不足为奇.     Oracle跟上了硬件发展的步伐,提供了很多面向多CPU的功能.从Oracle8i开始,Oracle在每个数据库函数中都实现了并行性,包括SQL访问(全表检索).并行数据操作和并行恢复.对于Oracle专业版的挑战是为用户的数据库配置尽可能多的CPU.     在Oracle环境中实现并行性最好的方法之

用Oracle并行查询发挥多CPU的威力_oracle

正在看的ORACLE教程是:用Oracle并行查询发挥多CPU的威力.参数  让我们进一步看看CPU的数量是如何影响这些参数的. 参数fast_start_parallel_rollback Oracle并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚得能力.当Oracle数据库发生少有的崩溃时,Oracle能自动检测未完成的事务并回滚到起始状态.这被称为并行热启动,而Oracle使用基于cpu_count的fast_start_parallel_rollback参数来决定未完成事务的秉性程

《Arduino开发实战指南:机器人卷》一3.6 编程原理与示例程序

3.6 编程原理与示例程序 1.搭建硬件 Arduino Uno板 1块 L298N模块 1块 1∶48直流减速电机 2个 杜邦线 若干 2.示例程序根据图3.12所示直流电机驱动电路,编写程序以实现双路电机顺时针加速10秒,然后反转减速10秒,并循环交替上述过程.其中,Arduino Uno板与L298N模块的接线情况如 Arduino Uno驱动L298N控制直流电机正.反转示例程序清单如下: #define IN1 3 #define IN2 4 #define IN3 6 #define

SQL Server与Oracle并行访问的本质区别

设计优良.性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务.而"底气不足"的数据库系统随着更多的用户同时访问系统将大大降低其性能.最糟糕的情况下甚至可能导致系统的崩溃. 当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案.SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法.它们之间的实质差别在哪里呢? 并行访问的问题 并行访问出现问题存在若干种情况.在最简单的情形下,数量超过一个的用户可能同

SQL Server与Oracle并行访问的区别

设计优良.性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务.而"底气不足"的数据库系统随着更多的用户同时访问系统将大大降低其性能.最糟糕的情况下甚至可能导致系统的崩溃. 中国.站.长站 当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案.SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法.它们之间的实质差别在哪里呢? Www.Chinaz.com 并行访问的问题     并行访问出现问题存在

用php+oracle实现分页的示例程序

oracle|程序|分页|示例 <html><body><?include "/maya/inc/dbconn.php";$sql="select max(rownum) from xqhtest where id<50";$stmt=ociparse($gConn,$sql);ociexecute($stmt);ocifetch($stmt);$rowcount=ociresult($stmt,1);ocifreestateme

Oracle并行简介

并行DML操作需注意2点: 1).显示在会话里执行:alter session enable parallel dml; 2).对于Delete.Update .Merge的操作,只有被操作的对象是分区表时,Oracle才会启用并行操作; 3).对于insert只有insert into ...select * from 此形式才有用; 各种并行操作举例如下: --并行delete delete /*+ parallel(t,2) */ * from t; --并行update update /