- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE并行技术使用
ORACLE 并行技术应用探讨
前言
ORACLE8i数据库及OPS选件是目前许多客户的首选,充分利用ORACLE8的新特性进行应用设计是客户的要求。本文简单介绍了ORACLE的并行技术,并对ORACLE并行服务器(OPS)技术、并行DML(PDML)技术以及分区(Partition)等技术在应用系统中的使用进行了简单的描述。(有关并行结构、OPS应用划分等请参见《宏智通讯》第一期)
OPS
1.1 什么是OPS
OPS (Oracle Parallel Server)――ORACLE并行服务器是为了满足人们对系统的高可靠性、高速性以及VLDB(大规模数据库)的需求而开发设计的一项并行处理技术。对DLM的管理是影响OPS性能的重要指标,应用系统的设计是否合乎OPS的要求直接关系到应用系统的成败。
Oracle Parallel Server支持cluster结构、NUMA结构和MPP结构。
OPS的设计目标是:
提高系统性能
提高系统吞吐量
高可靠性
有效支持更多用户
均衡负载不是OPS的设计目的
2.2 OPS的结构
整个系统中只有一套数据库,在这套数据库上可以运行多个实例(instance),所有节点的实例共享一套数据文件(datafiles) 和控制文件(controlfiles) ,同时每个实例均有自己的重做日志文件(redolog files),且任何一个节点上的重做日志文件均能够为其他节点访问,这样保证在某个节点上实例宕掉后,其他节点上的实例能够利用宕掉节点上的重做日志文件进行数据库的恢复。
2.3 OPS中的基本概念
iDLM (Integrated Distributed lock manager) 是由ORACLE提供的一种对共享资源进行管理的机制。OPS使用两种类型的锁进行多个实例之间的同步,即PCM锁和非PCM锁(PCM lock and non-PCM lock)
2.PCM 锁和非PCM锁
PCM lock是实例级的锁,用来管理数据文件中的数据块之间的锁。PCM锁由初始化参数中诸如GC_FILES_TO_LOCKS、GC_ROLLBACK_LOCKS等参数进行设置。
Non-PCM lock控制对数据文件、控制文件、SGA区中字典缓冲及其在实例间的通讯。
Ping 和 false ping
Oracle 并行服务器运行于同一个数据库,可以有多个实例同时运行,提供数据库服务,每个实例都有自己的数据缓冲区。由于每个实例都有自己的数据缓冲区,必须保持这些缓冲区的一致性:
实例1对某一数据块进行写操作,一旦实例2也对它进行读写操作,则实例1需要将该数据块写入磁盘后实例2才能对该数据库进行操作(此时,实例1将对该数据块所拥有的exclusive锁降级为NULL锁)。
这种情况称为一个ping。Ping 使原来一个内存I/O可以完成的工作变成2个磁盘 I/O和一个内存 I/O才能完成的工作,如果系统中有过多的ping则将大大降低系统的性能。
同时,由于系统的PCM锁的数量有限(一个PCM锁大概需要占用80Bytes的物理内存),因而每个PCM锁管理不止一个数据块,若实例1 和实例2 要操作不同的数据块,而这些数据块是由同一个PCM锁管理的,仍然也会发生ping。这些ping即称为false ping。
2.PDML
PDML(Parallel DML)――并行DML语句加速了大批量数据更改并且提供了事务处理的灵活性;同时也简化了DBA的任务,比如对数据仓库家里临时回滚表及在分区与非分区表之间交换数据等等;从开发人员分布和协调数据到执行PDML操作不需要额外的设置和干预。
2.1 系统需求
具有下列特性的系统能充分体会PDML的益处:
具有高物理内存的SMP或MPP机器
较高的I/O带宽(多个磁盘、多个磁盘控制器)
足够的CPU和内存支持并行处理操作
2.2 可以并行执行的操作
在ORACLE8i中下面的操作能够并行执行:
TABLE SCAN
PL/SQL function called from SQL
Sort merge join
“Not in”
Nested loop join
Select distinct
Hash join
Aggregation
Group by
Cube
Union and union all
Create table as select
Order by
Rebuild index partition
Rollup
Move partition
Create index
Update
Rebuild index
Insert … select
Split partition
Enable constraint(the table delete scan is paral
文档评论(0)