已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ORACLE 并行技术应用探讨前言ORACLE8i数据库及OPS选件是目前许多客户的首选,充分利用ORACLE8的新特性进行应用设计是客户的要求。本文简单介绍了ORACLE的并行技术,并对ORACLE并行服务器(OPS)技术、并行DML(PDML)技术以及分区(Partition)等技术在应用系统中的使用进行了简单的描述。(有关并行结构、OPS应用划分等请参见宏智通讯第一期)1 OPS1.1什么是OPSOPS (Oracle Parallel Server)ORACLE并行服务器是为了满足人们对系统的高可靠性、高速性以及VLDB(大规模数据库)的需求而开发设计的一项并行处理技术。对DLM的管理是影响OPS性能的重要指标,应用系统的设计是否合乎OPS的要求直接关系到应用系统的成败。Oracle Parallel Server支持cluster结构、NUMA结构和MPP结构。OPS的设计目标是:l 提高系统性能l 提高系统吞吐量l 高可靠性l 有效支持更多用户l 均衡负载不是OPS的设计目的2.2OPS的结构整个系统中只有一套数据库,在这套数据库上可以运行多个实例(instance),所有节点的实例共享一套数据文件(datafiles) 和控制文件(controlfiles) ,同时每个实例均有自己的重做日志文件(redolog files),且任何一个节点上的重做日志文件均能够为其他节点访问,这样保证在某个节点上实例宕掉后,其他节点上的实例能够利用宕掉节点上的重做日志文件进行数据库的恢复。2.3OPS中的基本概念1 iDLM (Integrated Distributed lock manager) 是由ORACLE提供的一种对共享资源进行管理的机制。OPS使用两种类型的锁进行多个实例之间的同步,即PCM锁和非PCM锁(PCM lock and non-PCM lock)2PCM 锁和非PCM锁PCM lock是实例级的锁,用来管理数据文件中的数据块之间的锁。PCM锁由初始化参数中诸如GC_FILES_TO_LOCKS、GC_ROLLBACK_LOCKS等参数进行设置。Non-PCM lock控制对数据文件、控制文件、SGA区中字典缓冲及其在实例间的通讯。2 Ping 和 false pingOracle 并行服务器运行于同一个数据库,可以有多个实例同时运行,提供数据库服务,每个实例都有自己的数据缓冲区。由于每个实例都有自己的数据缓冲区,必须保持这些缓冲区的一致性:实例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。2PDMLPDML(Parallel DML)并行DML语句加速了大批量数据更改并且提供了事务处理的灵活性;同时也简化了DBA的任务,比如对数据仓库家里临时回滚表及在分区与非分区表之间交换数据等等;从开发人员分布和协调数据到执行PDML操作不需要额外的设置和干预。2.1系统需求具有下列特性的系统能充分体会PDML的益处:l 具有高物理内存的SMP或MPP机器l 较高的I/O带宽(多个磁盘、多个磁盘控制器)l 足够的CPU和内存支持并行处理操作2.2可以并行执行的操作在ORACLE8i中下面的操作能够并行执行:l TABLE SCANl PL/SQL function called from SQLl Sort merge joinl “Not in”l Nested loop joinl Select distinctl Hash joinl Aggregationl Group byl Cubel Union and union alll Create table as selectl Order byl Rebuild index partitionl Rollupl Move partitionl Create indexl Updatel Rebuild indexl Insert selectl Split partitionl Enable constraint(the table delete scan is parallelizedl Start transformation2.3并行DML的约束l 非分区的表不支持并行update/deletel 对于分区列的修改是允许的,但仅仅在该修改不会导致记录被修改或迁移到新的分区l 如果update操作要求全局的唯一索引来维护,则系统不能进行并行的update操作l 每个transaction在每个表上仅仅允许一个并行DML操作l ORACLE8不支持伴随并行DML的触发器l 并行DML不能在cluster表、index-organized表或带有object列或LOB列的表上执行l 并行DML不能是分布式TRANSACTION的一部分l self-referential integrity,deferred integrity或delete-cascade constraints将限制PDML的执行2.4如何使用ORACLE并行处理技术1ORACLE并行执行SQL语句的方式l 以ROWID range划分并行table scan(查询语句及在DML和DDL语句中的子查询语句):Oracle在执行查询语句时动态的将被查询的表或索引按照rowid划分成若干部分,在同时对不同的部分执行查询操作。这种并行操作可以应用于分区或非分区的表和索引。Rowid range不能跨分区而存在,所以对于分区的表或索引,这种查询可以避免不必要的分区扫描(partition prunning)。l 以分区划分并行DML或DDL:在对分区的表或索引执行并行的DML或DDL时,ORACLE会尽量为每个不同的分区分配不同的并行执行服务进程。一个服务进程操作一个以上分区的情况也允许存在。当操作涉及多个分区时,操作可以被并行执行,而当操作仅涉及单个分区时,操作仍被串行执行。l 以并行执行服务进程划分的并行操作:这种情况仅用于insert到非分区的表。由于新记录没有rowid,所以只能以并行服务进程(parallel slave process)来实现并行操作。2不同类型的PDML基本规则。l 并行insert的规则- insert语句必须是INSERT INTO 表名SELECT 格式的语句- 被修改的表(目标表)必须有并行的定义或者在该insert语句中使用 parallel hint指令- 一个用户或应用在非分区表中也能象在分区表中一样实行并行insert,对于分区表,数据库对于每个分区至少分配一个进程,对非分区表,数据库对该表分配多个进程并且赋给同样数量的insert记录到每个进程- 在这个transaction中你不能看到并行插入的结果,在并行DML操作完成之后,其他任何sql语句均不能访问同样的表直到执行COMMIT。否则将得到ORA-12838错误“不能读或修改被并行修改的对象”。l 并行update和delete的规则- 目标表必须有一个并行声明或者在这个UPDATE/DELETE语句上使用parallel hint的指令- PDML仅仅可以在分区表上使用- UPDATE和DELETE操作通过分区被执行- 并行度受该语句所访问的分区的限制,如果该语句被限制到一个分区,那么该语句将不能被并行执行- 在这个transaction过程中,并行update和delete的结果是不可见的,任何试图对该目标表的访问都必须在该并行操作被COMMIT后。3如何使用ORACLE并行技术?l 使用hint使ORACLE优化器使用并行机制例如:select /*+parallel(emp,10,4)*/ * from emp;以上hint指明查询emp表需在4个实例上,每个实例启用10个并行服务进程来完成)。对于PDML(insert、update、delete),需在session一级通过ALTER SESSION ENABLE PARALLEL DML语句使PDML生效,然后这个执行PDML语句的session或应用进程将扮演一种协调进程的角色,分布DML到不同的并行服务进程然后合并所有的执行结果;在完成并行DML语句后,需要显示的对这一session disable PDML机制,可以用语句ALTER SESSION DISABLE PARALLEL DML或退出该session实现。alter session enable parallel dml;insert /*+parallel(A1,8)*/ into A1 select /*+parallel(A2,10)*/ * from A2;l 在创建或修改表/索引时使之拥有并行度例如:create table emp( ) parallel (degree 5);alter table emp parallel (degree 10);这样以后在操作表时,即使不指定并行hint,ORACLE也会自动执行并行操作。3PARTITION(分区)3.1分区1 什么是分区(partition)在ORACLE8中,表和索引等对象能被分解成更小的数据集合或数据段,即分区。分区与定义它们的表或索引有着相似的属性,甚至还可以有自己的存储子句(如pctfree、pctused等)。分区是由key range或partition key定义的。Partition key指定了每个分区所包含的内容。ORACLE8通过partition key能自动管理对分区的增、删、改等操作。(注:可以将分区理解为介于表/索引和表空间之间的数据字典层)2 什么情况下需要进行分区l 表或索引超过2GB则建议进行分区l 使用ORACLE PDML语句则必须进行分区l 部分数据(例如历史数据)需要脱机保存,则必须使用分区l 一定比例的数据是只读的(例如1年中前11个月数据为只读),建议使用分区l 在OPS下,多个实例均需访问的表建议进行分区l 使用parallel-index查找的表必须进行分区3 分区的易处理性由于分区是被当做segment来对待的,所以我们在设计和维护数据库上有更大的灵活性。在管理表/索引方面,用户能对它们有更多的控制,这是由于我们不局限于对表/索引进行直接的管理,而是能对单独的分区进行管理和维护。另外当我们对一个分区进行操作时,不影响正在对同一表/索引的其他分区的操作。4 数据库的物理设计与分布设计并建立数据库是一件富有挑战性的工作,定义并创建大的表空间、均衡I/O、划分逻辑分区以避免冲突和ping等等均是DBA每天所必须面对的问题。ORACLE8的分区功能为上述问题提供了极大的帮助。使用分区能够在所定义的对象上加更多的控制,如将庞大的表分解为许多分区,每个分区放在特定的表空间上、特定的磁盘上:l 分区放在不同的表空间、磁盘上可以获得较高的可用性l 将某些分区放在同一个表空间、磁盘上,另一些分区放在其他表空间、磁盘上以获得特殊的I/O需求l 在某些分区上用DDL语句或DML语句进行维护操作并不影响对其他块的访问l 使用SQL*Loader直接向一个特定的块装载数据l 根据本地表的分区内容定义LOCAL索引以提高性能,并能对其进行本地维护5 有关分区的操作ORACLE8提供了象创建、修改、删除分区等这些命令,还提供了象将分区从一个区域移到另一个区域的命令。例如我们可以将上个月的数据从高性能或高可用的表空间转移到低性能或低可用性的表空间以备归档或删除,也为下个月的分区提供空间,使最近的数据能够保持高效与可靠;同时将分区从一个表空间移到另一个表空间可以消除碎片、合并分区的extents。我们还可以在分区中数据量过于庞大的情况下将分区分成两个新的分区。6 Export我们可以export出表的某个分区中的数据,使用象“table_nae:partition_name”这样的语法export出某个表中的特定分区。这样可以解决export最经常遇到的两个问题:l 避免2GB的文件大小限制l 缩短备份数据的时间间隔7 备份策略使用分区export可以提供更多的好处。我们可以将export也纳入备份策略。通过为表的分区指定单独的表空间,可以将它们改为只读的分区,还可以直接创建只读的分区,降低备份的频率。3.2使用ORACLE分区1 Insert语句2 Update和delete语句并行update和并行delete是与partitioned tables有关的,而不是非partitioned tables。PDML(并行DML)语句与ORACLE PARALLEL QUERY相似,有一个协调进程和一套伺服进程。伺服进程的数目由优化器、系统资源、affinity、parallel hint等因素决定。在设计数据库时决定以下几点是很重要的:l partitioned tables的数量l 一个partitioned table中分区的数量l 每个分区的大小使用PDML,需要有足够的回滚段资源。PDML使用回滚段的情况如同多条DML语句在执行多个事务一样。PDML占用N+1个事务,其中N代表这个事务所使用的并行进程数目。应注意入freelists和initrans等存储参数。如果在某个特殊的表上使用PDML的话,还需要为这个表分配额外的freelists和initrans资源。使用PDML前,在数据库的实际阶段需要考虑以下几点:l 预测有多少个分区l 留出足够的资源以备数据库增长之用l 夜间的批处理工作及应用l 在分区表上执行PDML的时限3.3将non-par
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金融产品适当性高净值客户资产配置风险告知考核试卷
- 2025年水电工程建设管理节水技术应用认证考核试卷
- 2025年工业设计行业工业设计创新发展研究报告及未来发展趋势预测
- 2025广东中山市公安局横栏分局招聘警务辅助人员9人考试笔试备考试题及答案解析
- 2026广西贵港桂平市人民医院招聘133人考试笔试备考试题及答案解析
- 2025贵州六盘水市村(社区)干部专项招聘乡镇(街道)事业单位工作人员9人笔试考试备考试题及答案解析
- 2025西南交通大学唐山研究院选聘(博士研究生)10人(河北)笔试考试参考题库及答案解析
- 2025广东云浮市云安区招聘教育人才2人考试笔试模拟试题及答案解析
- 2026中国铁路西安局集团有限公司招聘高校毕业生455人(一)考试笔试备考题库及答案解析
- 2025云南昆明润城学校秋季学期教育人才招聘10人考试笔试参考题库附答案解析
- 机械电子工程大一的职业生涯规划
- 采购合同英文
- 培训班授课教师课时费用领取表
- GB/T 3477-2023船用风雨密单扇钢质门
- 胸腔闭式引流护理-2023年中华护理学会团体标准
- 税收咨询报告模板
- 中国建筑史-绘图题
- 上海市住宅修缮施工资料及表式
- (6)-1.2药物递送系统药剂学
- 金平福源矿业有限公司田房锡矿采矿权出让收益评估报告
- 第1章大气科学概论(南京信息工程大学大气概论)
评论
0/150
提交评论