Oracle数据库分区管理_第1页
Oracle数据库分区管理_第2页
Oracle数据库分区管理_第3页
Oracle数据库分区管理_第4页
Oracle数据库分区管理_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle数据库分区管理Oracle 白皮书目 录 HYPERLINK l _TOC_250009 分区 概念3 HYPERLINK l _TOC_250008 简介3 HYPERLINK l _TOC_250007 分区的好处3 HYPERLINK l _TOC_250006 分区 业务建模7 HYPERLINK l _TOC_250005 基本分区策略7 HYPERLINK l _TOC_250004 分区扩展8 HYPERLINK l _TOC_250003 Partition Advisor9 HYPERLINK l _TOC_250002 分区策略和扩展概览10 HYPERLINK

2、 l _TOC_250001 通过分区实现信息生命周期管理11 HYPERLINK l _TOC_250000 总结11 分区 概念简介Oracle 8.0 于 1997 年首度引进的 Oracle Partitioning 是 Oracle 数据库最重要、也是最成功的技术之一,它可以显著改善数万个应用程序的性能、可管理性和可用性。Oracle Database 11g 第 2 版采用了第九代分区技术,可支持用户为更多业务情景建立模型, 并使分区更加简单易用,实现了分区的大众化。Oracle Database 11g 第 2 版在原有基础上对 Oracle Partitioning 进行了持续

3、改进,十多年以来始终致力于保护客户对分区技术的投资。分区的好处分区可以提高各种应用程序的可管理性、性能和可用性,具有不可估量的益处。通过使用分区将特定查询或维护操作的性能提升一个数量级的情况并不罕见。此外,分区还可以使用“分层归档”方法将早期的相关信息保存在联机的低成本存储设备上,从而显著降低数据的总拥有成本。Oracle Partitioning 可以采用一种简单、有效且十分强大的方法在大型环境中实现信息生命周期管理。借助分区技术,数据库设计人员和管理员还可以解决前沿应用程序引发的一些棘手问题。它是打造多 TB 系统或超高可用性系统的一个关键工具。分区的基本知识利用分区技术,用户可将表、索引

4、或索引组织表细分为更小的子集。数据库对象的这些子集就被称作分区。每个分区都有各自的名称,同时也可视情况为其指定相应的存储特性。就数据库管理员而言,他们可以对分区对象的多个子集进行集中管理或分散管理。这为管理员管理分区对象赋予了极大的灵活性。然而,从应用程序的角度来看,分区表与非分区表没有任何区别;使用 SQL DML 命令访问分区表时并不需要进行任何修改。图 1:从应用程序和 DBA 的角度描述分区表数据库对象(表、索引和索引组织表)使用“分区键”进行分区。分区键是一组数据列,用于确定特定的行存储在哪个分区上。举例来说,图 1 所示为采用月分区策略、按销售日期进行范围分区的销售表;在任何应用程

5、序中,该表都显示为一个单一、“正常”的表。然而,DBA 可以实现对月度分区的单独管理和存储。他们可以采用不同存储层存储数据、对旧数据应用表压缩技术,或者将全部旧数据存储在只读表空间中。索引可以与基础表的基本分区策略耦合,也可以不与之耦合,这与选定的索引分区策略无关。应根据业务需求选择相应的索引分区策略,从而实现最适合的分区,以便支持任何类型的应用程序。Oracle Database 11g 支持三种类型的分区索引。本地索引:本地索引位于分区表中,它可以与基本分区表耦合,并可“继承”该表的分区策略。因此,本地索引的每个分区仅对应基础表的一个分区。本地索引与基本分区表的耦合有助于优化分区维护;例如

6、,在表分区被删除后,Oracle 只需要删除相应的索引分区即可。无需进行成本高昂的索引维护。本地索引是数据仓储环境中最常见的索引。全局分区索引:全局分区索引位于分区表或非分区表中,采用与所在表不同的分区键或分区策略进行分区。全局分区索引可以运用范围或散列分区策略进行分区,且不与基础表相耦合。例如,一个按月进行范围分区的表具有 12 个分区。该表上的索引可采用一种不同的分区键进行范围分区,因此与所在表具有不同的分区数量。全局分区索引在 OLTP 中比在数据仓储环境中更为常见。全局非分区索引:从本质上来说,全局非分区索引与非分区表的索引没有区别。索引结构未进行分区,且未与基础表耦合。在数据仓储环境

7、中,全局非分区索引最常用于主键约束。另一方面,OLTP 环境在很大程度上依赖于全局非分区索引。此外,Oracle 还为分区表的管理提供了一套全面的 SQL 命令,其中包括添加、删除、拆分、移动、合并、截断和选择性压缩分区。通过分区提高可管理性Oracle Partitioning 可以将表和索引细分为更小、更易于管理的单元,这样数据库管理员便可采用一种“分而治之”的方法来管理数据。借助分区技术,维护操作可以侧重于表的某些特定部分。例如,数据库管理员可以只压缩表中包含 2006 年数据的单个分区,而不是对整个表进行压缩。针对整个数据库对象的维护操作可以按分区来执行,从而将维护流程细分为更易于管理

8、的块。通过分区提高可管理性的典型应用是在数据仓库中支持“滚动窗口”加载过程。假设DBA 每天都要向表中加载新数据,则可以对表进行范围分区,使每个分区包含一天的数据。只需添加新分区即可完成加载过程。由于 DBA 不需要修改任何其他分区,因此添加一个分区远比修改整个表更为高效。采用分区的另一个优势在于,在删除数据时可以直接删除整个分区,与单独删除每一行相比,此操作更加高效和快捷。通过分区提高性能通过限制要检查或要操作的数据量,分区提供了许多性能优势。这些特性包括:分区修剪:分区修剪(亦称为分区消除)是采用分区提高性能的一种最简单、也是最基本的方法。分区修剪往往可以将查询性能提高几个数量级。举例来说

9、,假设某应用程序中含有一个 ORDERS 表,其中包含订单的历史记录,并且已按天进行分区。针对某一周订单的查询只会访问 ORDERS 表的 7 个分区。如果该表中包含 2 年的历史记录,那么该查询则只需访问 7 个、而不是 730 个分区。仅利用分区修剪就可将查询的执行速度提升 100 倍。 分区修剪可以与 Oracle 的所有其他性能特性协同工作。Oracle 会将分区修剪特性与任何其他索引技术、联接技术或并行访问方法结合在一起来使用。智能化分区联接:Oracle Partitioning 还可以使用智能化分区联接技术来提高多表联接的性能。当两个表要联接在一起且其中至少有一个表按联接键进行分

10、区时,则可以采用智能化分区联接。对于联接表,智能化分区联接可以将较大的联接分解为使用“相同”数据集的较小联接。此处,“相同”是指联接两端含有完全相同的分区键值集,从而确保只有这些“相同”数据集的联接才能产生结果,系统无需考虑其他数据集。Oracle 可以使用已经过(物理)同等分区的表来建立联接,也可以在运行时透明地对表进行重新分配(即“重新分区”),来创建与其他表的分区相匹配的同等分区数据集,从而缩短完成所有联接的时间。这同时为串行和并行执行带来了显著的性能优势。通过分区提高可用性分区的数据库对象具有分区独立性。该分区独立性特性是高可用性战略的一个重要组成部分。例如,当分区表的某个分区不可用时

11、,该表中的所有其他分区仍将保持联机状态和可用性。应用程序可以继续对该分区表执行查询和事务处理,只要不访问那个不可用的分区,这些数据库操作就可以成功运行。数据库管理员可以指定将每个分区存储在单独的表空间中;这样一来,管理员便可对每个分区单独执行备份和恢复操作,同时不会影响表中的其他分区。因此,在灾难发生时,管理员可以只使用包含活动数据的分区恢复数据库,然后在方便的时候恢复其他分区中的非活动数据,从而减少系统停机时间。此外,分区还可以缩短计划停机时间。由于分区改善了性能,因此,数据库管理员可以在相对较小的批处理窗口中对大型数据库对象执行维护操作。分区 业务建模Oracle Database 11g

12、 第 2 版提供了一组全面的分区策略,可允许用户根据实际业务需求以最佳方式调整数据细分。所有可用分区策略都建立在基本数据分配方法的基础之上,而基本数据分配方法既可用于单一(一级)分区表,也可用于组合分区表。此外,Oracle 还提供了丰富的分区扩展,可让用户更加灵活地选择分区键,可根据需要自动创建分区,也可以为非分区对象提供分区策略建议。基本分区策略Oracle Partitioning 提供了三种基本数据分配方法,它们可控制将数据置于各个不同分区的实际方法。这三种方法分别是:范围:数据根据分区键值的范围进行分配(如果以日期列作为分区键,则 January-2007 分区将包含分区键值在 01

13、-JAN-2007 和 31-JAN-2007 之间的行)。数据分配是一个没有漏洞的连续统一体,范围的下边界自动由前一范围的上边界定义。列表:数据分配由分区键值的列表定义(如果以地区列作为分区键,则 NorthAmerica 分区可能包含 Canada、USA 和 Mexico 等值)。可以定义一个特殊的“默认”分区,用来捕获未在列表中明确定义的所有分区键值。散列:用于分区键的散列算法可以确定给定行的分区。不同于其他两种数据分配方法,散列算法并不提供数据与分区间的逻辑映射。采用以上数据分配方法,管理员可将表处理为单一分区表或组合分区表:单一(一级)分区:通过指定一种数据分配方法来定义表,分区键

14、可为一个或多个列。例如,一个表使用数字列作为分区键,且拥有 less_than_five_hundred 和less_than_thousand 两个分区,则 less_than_thousand 分区将包含满足以下条件的行:500 = 分区键 1000。用户可以指定范围、列表和散列分区表。组合分区:组合分区表由两种数据分配方法共同定义。首先,使用一种数据分配方法对表进行分区,然后再使用另一种数据分配方法为每个分区进一步划分子分区。给定分区的所有子分区一起构成一个数据逻辑子集。例如,一个范围 散列组合分区表最初将进行范围分区,随后,每个范围分区又通过散列分区算法进一步细分为子分区。可用的组合分

15、区方法包括范围-散列、范围-列表、范围-范围、列表-范围、列表-列表、列表-散列,以及 Oracle Database 11g 第 2 版中新推出的散列-散列方法。索引组织表 (IOT) 可进行范围、散列和列表分区。组合分区不支持 IOT。分区扩展除基本分区策略外,Oracle 还提供了分区扩展。Oracle Database 11g 中的扩展主要关注以下两个目标:显著增强分区表的可管理性。提高分区键定义的灵活性。分区扩展主要包括以下几种类型:间隔分区:间隔分区是 Oracle Database 11g 新引入的分区策略,它扩展了范围方法的功能,可以采用间隔定义来定义同等分区范围。在首次插入分

16、区数据时,Oracle 将根据需求自动创建分区,而非明确指定各个分区的范围。间隔分区大大提高了分区表的可管理性。例如,定义一个间隔分区表,为一年中的每个月都创建一个新的分区。这样,在将 September 2007 的第一条记录插入数据库时,Oracle 将自动创建 September2007 分区。间隔分区表可用的方法包括间隔、间隔-列表、间隔-散列和间隔-范围。REF 分区:Oracle Database 11g 允许利用现有的父子关系对表进行分区。子表继承父表的分区策略,且子表无需存储父表的分区键列。在没有 REF 分区的情况下,如果需要利用相同的分区策略,用户必须将父表所有的分区键列复

17、制到子表;有了 REF 分区, 用户就可以根据逻辑数据模型自然地对表进行分区,而无需存储分区键列,从而减少了非规范化的人工开销并节省了空间。REF 分区还透明地继承了所有分区维护操作, 这些操作将表的逻辑形式从父表更改为子表。此外,REF 分区还可以为父表和子表的同等分区自动进行智能化分区联接,从而提高操作的性能。例如,父表 ORDERS 按ORDER_DATE 列进行范围分区;其子表 ORDER ITEMS 并不包含 ORDER_DATE列,但可以通过引用 ORDERS 表来进行分区。如果 ORDERS 表按月份分区,则 Jan-2009 中所有订单的订单项都将存储在 ORDER ITEMS

18、 表的一个分区中。该表与其父表ORDERS 具有同等分区。如果将分区 Feb-2009 添加到 ORDERS 表中,则 Oracle 会透明地将同等分区添加到 ORDER ITEMS 表中。所有基本分区策略均可用于 REF 分区。基于虚拟列的分区:在以前的 Oracle 版本中,只有当分区键实际存在于表中时,才能对表进行分区。作为 Oracle Database 11g 中的新特性,虚拟列消除了该限制,并允许通过表达式来定义分区键,以便利用数据表中的一个或多个现有列,并将表达式仅存为元数据。现在,分区性能得到了增强,用户可在虚拟列上定义分区策略,从而能够更加全面地满足业务需求。您经常能看到信息

19、过载的列;举例来说,一个 10 位数的账户 ID 可能会在前三位数中包含账户的分支信息。借助基于虚拟列的分区扩展,用户可通过虚拟(派生)列 ACCOUNT_BRANCH 对包含 ACCOUNT_ID 列的 ACCOUNTS 表进行扩展。ACCOUNT_BRANCH 列派生自 ACCOUNT_ID 列(ACCOUNTS 表的分区键)的前三位数。基于虚拟列的分区支持所有基本分区策略。虚拟列还可以与间隔分区和 REF 分区表的分区键一起使用。Partition Advisor由 Oracle Database 11g 第 2 版新推出的加强型 SQL Access Advisor 不但可以为索引、物

20、化视图和物化视图日志提供建议,还可以生成分区建议。执行 SQL Access Advisor 提供的建议 不论只是分区方案还是整体方案 将带来预期的性能收益。生成的脚本既可以手动实施,也可以提交至 Oracle Enterprise Manager 的队列。借助分区建议的扩展,客户不仅可以获得专门针对分区的建议,也可以获得 SQL Access Advisor 的更全面的整体建议,从而在总体上提高 SQL 语句的整体性能。Partition Advisor 已集成到 SQL Access Advior 中,是 Oracle 调优包(一个额外的许可选项)的组成部分。用户可以在 Enterpris

21、e Manager 中或通过命令行界面来使用该功能。 PAGE 10分区策略和扩展概览下表对 Oracle Database 11g 第 2 版中所有可用的基本分区策略进行了概念性描述:分区策略数据分配业务案例示例范围分区基于值的连续范围。Orders 表按 order_date 进行范围分区列表分区基于值的无序列表。Orders 表根据 country 进行列表分区散列分区基于散列算法。Orders 表根据 customer_id 进行散列分区组合分区范围 范围范围 列表范围 散列列表 列表列表 范围列表 散列散列 散列基于上述基本策略(范围、列表、散列、间隔分区)中两种策略的组合Order

22、s 表先根据 order_date 进行范围分区,然后再根据customer_id 进行散列分区Orders 表先根据 order_date 进行范围分区,然后再根据shipment_date 进行范围分区除可用的分区策略外,Oracle Database 11g 第 2 版还提供了以下分区扩展:分区扩展说明业务案例示例间隔分区间隔间隔 范围间隔 列表间隔 散列范围分区的扩展。由间隔定 义,可提供等宽的范围。除第一个分区外,所有分区都是在相应数据插入时根据需求自动创建的。Orders 表按 order_date 进行分区,日期间隔预定义为一天,分区自 01-Jan-2009 开始REF 分区通过主键-外键对应关系,将子表按父表分区策略进行分区。分区键并不存储在子表的实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论