执行概要
Oracle9i 分区能够提高许多应用程序的可管理性、性能与可用性。分区可以将表、索引及索引编排表进一步划分,从而可以更精细地对这些数据库对象进行管理和访问。Oracle 提供了种类繁多的分区方案以满足所有的业务需要。另外,由于在SQL 语句中是完全透明的,所以分区可以用于几乎所有的应用程序。
分区的优点
分区可以提高可管理性、性能与可用性,从而给各种各样的应用程序带来极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还能够在很大程度上简化日常管理任务。
分区还使数据库设计人员和管理员能够解决尖端应用程序带来的最难的问题。分区是建立上亿万字节数据系统或需要极高可用性系统的关键工具。
分区的基本知识
分区能够使表、索引或索引编排表进一步细分。这些数据库对象的片段叫做分区。每个分区有自己的名称,还可以选择自己的存储特征。例如,表可以在不同的表空间以压缩表的形式存储旧的分区。从数据库管理员的角度看,分区的对象有多个段,可以进行统一管理或单独管理。这使数据库管理员在管理分区的对象时有相当大的灵活性。但是,从应用程序的角度看,分区的表与未分区的表是一样的,所以在使用SQL DML 命令访问分区的表时无须进行修改。
使用‘分区关键字’对表进行分区,这是一些列,用来定义指定的行将放置在哪个分区中。Oracle9i 提供5 种技术用于对表进行分区:
范围分区
由一定范围值的分区关键字指定每个分区(对于用日期列作分区关键字的表来说,分区‘2002 年1 月’包含分区关键字值从‘2002 年1 月1 日’到‘2002 年1 月31 日’ 的所有行)。
列表分区
由列表值的分区关键字指定每个分区(对于用地域列作分区关键字的表来说,‘北美’分区包含值‘加拿大’、‘美国’和‘墨西哥’)
散列分区
将散列算法用于分区关键字来确定指定行的分区
组合范围-散列分区
范围和散列技术的组合,首先对表进行范围分区,然后用散列技术对每个范围分区再次分区。给定的范围分区的所有子分区加在一起表示数据的逻辑子集。
组合范围-列表分区
范围和列表技术的组合,首先对表进行范围分区,然后用列表技术对每个范围分区再次分区。与组合范围-散列分区不同的是,每个子分区的所有内容表示数据的逻辑子集,由适当的范围和列表分区设置来描述。
索引编排表可以是范围分区,也可以是散列分区。
Oracle9i 还提供三种分区索引:
本地索引
本地索引是对分区方式与基本表的分区方式一模一样的分区表的索引。本地索引的每个分区仅对应于一个基本表的分区。
全局分区索引
全局分区索引是对分区或非分区的表的索引,该表通过本身的不同分区关键字予以分区。全局分区索引仅可用范围分区进行分区。例如,表可以用月份作范围分区,从而拥有12 个分区。该表的索引可能会用不同的分区关键字进行范围分区,因此有着不同数目的分区。
全局非分区索引
全局非分区索引基本上和非分区表的索引一样。该索引结构是不分区的。
Oracle 提供了一套强健的技术,进行表、索引与索引编排表的分区操作,这样,对任何业务环境下的任何应用程序,都可以选用最适当的分区技术。
Oracle 还提供一套完整的SQL 命令,用于管理分区表。其中包括添加新分区、删除分区、分解分区以及合并分区的命令。
分区技术提高可管理性
Oracle9i 分区功能允许将表和索引可以细分为较小、较容易管理的单元,使数据库管理员能够用‘分而治之’的手段进行数据管理。
使用分区技术,维护操作可集中于表的特定部分。例如,数据库管理员可以只对表的一部分做备份,而不必对整个表做备份。对整个数据库对象的维护操作,可以在每个分区的基础上进行,从而将维护工作分解成更容易管理的小块。
分区技术提高可管理性的一个典型用法是支持数据仓库中的‘滚动视窗’加载进程。假设数据库管理员每周向表中加载新数据。该表可以是范围分区,以便每个分区包含一周的数据。加载进程只是简单地添加新的分区。添加一个新分区的操作比修改整个表效率高很多,因为数据库管理员不需要修改任何其他分区。从分区后的表中去除数据也是一样。你只要用一个很简便快捷的数据字典操作删掉一个分区,而不必发出使用大量资源和调动所有要删除的数据的‘DELETE’ 命令。
分区技术提高性能
由于减少了所检查或操作的数据数量,同时允许并行执行,Oracle9i 的分区功能提供了性能上的优势。这些性能包括:
分区修整
分区修整是用分区技术提高性能的最简单最有价值的手段。分区修整常常能够将查询性能提高几个数量级。例如,假定应用程序中有包含定单历史记录的定单表,该表用周进行了分区。查询一周的定单只需访问该定单表的一个分区。如果该定单表包含两年的历史记录,这个查询只需要访问一个而不是一百零四个分区。该查询的执行速度因为分区修整而有可能快一百倍。分区修整能与所有其他Oracle 性能特性协作。Oracle 公司将把分区修整技术与索引技术、连结技术和并行访问方法一起联合使用。
分区智能联接
分区功能可以通过称为分区智能联接的技术提高多表联接的性能。当两个表要联接在一起,而且每个表都用联接关键字来分区时,就可以使用分区智能联接。分区智能联接将大型联接分解成较小的发生在各个分区间的联接,从而用较少的时间完成全部联接。这就给串行和并行的执行都能带来显著的性能改善。
更新和删除的并行执行
分区功能能够无限地并行执行UPDATE、DELETE 与MERGE 语句。当访问分区或未分区的数据库对象时Oracle 将并行处理SELECT 与INSERT 语句。当不使用
位图索引时,也可以对分区或未分区的数据库对象并行处理UPDATE、DELETE 和MERGE 语句。为了对有位图索引的对象并行处理那些操作,目标表必须先分区。这些SQL 语句的并行执行可以大大提高性能,特别是提高UPDATE 与DELETE 或MERGE 操作涉及大量数据时的性能。
分区技术提高可用性
分区的数据库对象具有分区独立性。该分区独立性特点可能是高可用性战略的一个重要部分,例如,如果分区表的分区不能用,但该表的所有其他分区仍然保持在线并可用。那么这个应用程序可以继续针对该分区表执行查询和事务处理,只要不是访问那个不可用的分区,数据库操作仍然能够成功运行。
数据库管理员可以指定各分区存放在不同的表空间里,从而让管理员独立于其它表分区针对每个分区进行备份与恢复操作。
还有,分区功能可以减少计划停机时间。性能由于分区功能得到了改善,使数据库管理员在相对较小的批处理窗口完成大型数据库对象的维护工作。
未来发展方向
自从推出分区技术以来,Oracle 公司在每次重要发布中都增加新的分区方法。Oracle8 推出范围分区,Oracle8i 推出散列分区和范围散列组合分区,Oracle9i 推出列表分区,Oracle9i Release 2 推出范围列表组合分区。Oracle 公司计划继续增加新的分区技术,保障提供面向所有的业务需求优化的分区技术。
结论
Oracle9i 分区技术大大提高了几乎所有数据库应用程序的可管理性、性能及可用性。分区技术可用于尖端应用程序,分区技术确实是保障这些应用程序成功的关键技术成分。同时,分区技术也可用于较为普通的数据库应用程序,来简化这些应用程序的管理工作,降低管理成本。