Oracle数据库可以很大,一个表有几个GB(甚至儿个TB)的数据是司空见惯的事情。分区是一种方法,它将一个大表从逻辑上划分为相对较小的块,以便于査询处理、DML操作和数据库管理。所仃分区都共享相同的逻辑定义、列定义和约束。
在将一个数百万行数据的表分成成百上千个分区时,査询响应时间的改进是令人吃惊的。在某些繁忙的环境下,每个小时都可能创建新分区。分区直接带来了良好的査询性能,因为数据库只需要搜索表的相关分区就可以完成査询。这种避免査询时检索不必要的分区的做法称为分区修剪(partition pruning).一个分区的可用性与其他分区无关。
由于在不同磁盘上保存大量被访问的表的分区,因此使用分区可能增加数据的I/O。如果使用Oracle的并行DML特性,分区表将提供更好的性能。
表分区还提供了分区独立性,这就是说,你可以在一个大表的分区上执行备份和恢复操作、数据装栽以及索引创建,而不是在整个表上执行。例如,可以使用Data Pump Export实用程序岌制--个分区的数据,在只需要整个数据集合的一部分时,导入和导出的时间将急剧减少。在分区而非整个表中执行任务的能力意味着数据库的停机时间将大大减少。
注解 虽然分区表提髙了非常大表的查询性能,但是,如果编程或设计上存在其他问题,则分区表也不是万能药.分区还带来了维护分区和索引的附加工作成本.当然,你必须为分区功能买单,因为它是必须单独从Oracle公司得到许可的一个选项.
分区表也是清除或归档旧数据的有效方法。在大数据仓库中,归档旧数据的工作很常见,而分区表使得归档变得很容易.例如,你可能每个季度都要将最老的分区删除并用新分区取代之,这样使分区表保持相同的数据量并覆盖相同的时间范围(公司三年的季度数据将使表的分区为12个)。另外,在将大表分成儿大块并旦分别导出每个分区时,大表的导岀的速度将更快。
Oracle提供了6种不同的方法分区表的数据:即范围分区、间隔分区、散列分区、列表分区、引用分区和系统分区。此外,你还可以使用组合分区(组合两个分区方法来把数据划分成更小的子分区)策略,这使得分区方法的数目超过了一打。无论使用哪种分区方法,在创建分区表时,都必须指定以下信息.
★ 分区方法:为6种分区类型之一。
★ 分区列(或多个列):是对表进行分区所依据的列(例如transaction_date).分区列值的范围或集合称为分区键。
★ 分区描述:这些描述指定每个分区中包含实际分区键的条件。对于范围分区,使用一个分区边界并使用VALUESLESSTHAN子句限制每个分区的分区键值。对于列表分区,指定直接值的一个列表,告诉Oracle一个分区中包含哪些分区键值。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




