oracle并行原理详解(上)

一、简单介绍OLTP和OLAP系统的特点小结

答:OLTP和OLAP是我们大家在日常生产库中最常用到的2种系统,简单的说OLTP是基于多事务短时间片的系统,内存的效率决定了数据库的效率。

OLAP是基于大数据集长时间片的系统,SQL执行效率决定了数据库的效率。因此说“并行parallel”技术属于OLAP系统范畴

二、并行技术实现机制和场合

答:并行是相对于串行而言的,一个大的数据块分割成n个小的数据块,同时启动n个进程分别处理n个数据块,最后由并行协调器coordinater整合结果返回给用户。实际上在一个并行执行的过程中还存在着并行进程之间的通信问题(并行间的交互操作)。上面也说过并行是属于大数据处理的技术适合OLAP,并不适合OLTP,因为OLTP系统中的sql执行效率通常都是非常高的。

三、测试并行技术在实际中的应用和规则

(1)在有索引的表leo_t上使用并行技术,但没有起作用的情况

创建一张表

LS@LEO> create table leo_t as select rownum id ,object_name,object_type from dba_objects;

在表id列上创建索引

LS@LEO> create index leo_t_idx on leo_t(id);

收集表leo_t统计信息

LS@LEO> execute dbms_stats.gather_table_stats(ownname=>'LS',tabname=>'LEO_T',method_opt=>'for all indexed columns size

2',cascade=>TRUE);

为表启动4个并行度

LS@LEO> alter table leo_t parallel 4;

启动执行计划

LS@LEO> set autotrace trace explain stat

LS@LEO> select * from leo_t where id=100;  使用索引检索的数据,并没有启动并行

Execution Plan  执行计划

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

Plan hash value: 2049660393

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

| Id  | Operation                   | Name      | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT            |           |     1 |    28 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| LEO_T     |     1 |    28 |     2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | LEO_T_IDX |     1 |       |     1   (0)| 00:00:01 |

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

Predicate Information (identified by operation id):

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

  2 - access("ID"=100)

Statistics   统计信息

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

 1  recursive calls

 0  db block gets

 4  consistent gets   4次一致性读,即处理4个数据块

 0  physical reads

 0  redo size

544  bytes sent via SQL*Net to client

381  bytes received via SQL*Net from client

 2  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

 1  rows processed

说明:我们在这个表上启动了并行但没有起作用是因为CBO优化器使用了B-tree索引来检索的数据直接就定位到rowid(B-tree索引特点适合重复率比较低的字段),所以才发生了4个一致性读,发现使用索引效率非常高,资源代价比较小没有使用并行的必要了。

(2)读懂一个并行执行计划

LS@LEO> select object_type,count(*) from leo_t group by object_type;  对象类型分组统计

35 rows selected.

Execution Plan   并行执行计划

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

Plan hash value: 852105030

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

时间: 2024-12-31 01:23:44

oracle并行原理详解(上)的相关文章

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

【DG】DG概念原理详解

[DG]DG概念原理详解 RAC, Data Gurad, Stream 是Oracle 高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合. 他们各自的侧重点不同,适用场景也不同. RAC 它的强项在于解决单点故障和负载均衡,因此RAC 方案常用于7*24 的核心系统,但RAC 方案中的数据只有一份,尽管可以通过RAID 等机制可以避免存储故障,但是数据本身是没有冗余的,容易形成单点故障. Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保

【体系结构】Oracle数据块详解

Oracle数据块详解 操作系统块是操作系统读写的最小操作单元,也是操作系统文件的属性之一.当创建一个Oracle数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小.Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块. 数据库块也称逻辑块或Oracle块,它对应磁盘上一个或多个物理块,它的大小由初始化参数DB_BLOCK_SIZE决定,可以定义数据块为2K.4K.8K.16K.32K甚至更大,默认Oracle块大小是8K.若一旦设置了Oracle数据

MVC系列(7) WebActivator的实现原理详解

上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在HttpApplication初始化之前,之后以及ShutDown的时候分别执行指定的代码,示例如下: [assembly: WebActivator.PreApplicationStartMethod(typeof(A.InitClass1), "PreStart")] [assembly: WebAct

KVC/KVO原理详解及编程指南(转)

作者:wangzz 原文地址:KVC/KVO原理详解及编程指南 本文只转载KVC部分讲解,KVO部分可到原博客查看. 本人在阅读过程中也进行了一些勘误修改. 前言 1.本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的理解. 2.由于KVO内容较少,而且是以KVC为基础实现的,本文将着重介绍KVC部分. 一.简介 KVC/KVO是观察者模式的一种实现,在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCoding/NSKeyValueObserving非正式

AngularJS入门教程之数据绑定原理详解_AngularJS

本文实例讲述了AngularJS数据绑定原理.分享给大家供大家参考,具体如下: 注 这篇文章主要是写给新手的,是给那些刚刚开始接触Angular,并且想了解数据帮定是如何工作的人.如果你已经对Angular比较了解了,那强烈建议你直接去阅读源代码. Angular用户都想知道数据绑定是怎么实现的.你可能会看到各种各样的词汇:$watch,$apply,$digest,dirty-checking...它们是什么?它们是如何工作的呢?这里我想回答这些问题,其实它们在官方的文档里都已经回答了,但是我

HTTPS 加密算法原理详解

本文讲的是HTTPS 加密算法原理详解, 前言 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷是为了保证数据安全. 近两年,Google.Baidu.Facebook 等这样的互联网巨头,不谋而合地开始大力推行 HTTPS, 国内外的大型互联网公司很多也都已经启用了全站 HTTPS,这也是未来互联网发展的趋势. 为鼓励全球网站的 HTTPS 实

SSL/TLS 原理详解

本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: tls-ssl-_tcp-ip_protocol.png SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(En

ASP.NET页面与IIS底层交互和工作原理详解

ASP.NET页面与IIS底层交互和工作原理详解  第一回:   引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实现某个特定的功能. 这种做法,实际上是回答了"如何去做"的问题,却没有回答"为什么可以这样做"的问题. 尽管我很推崇 悉江华 先生的<圣殿祭祀的Asp.Net开发详解>一书,但当我翻看了一下其对角色(R