10.2 分区表的管理
随着数据库系统的运行,数据库中存储的数据越来越多。在现代企业的数据库中,许多表的存储空间可达几百个GB,甚至几个TB。对于这样的大型表如果执行全表查询或者DML操作时,效率是非常低的。
为了提高大型表的访问效率,Oracle提供了一种分区技术,利用这种技术可以把表、索引等数据库对象中的数据分割成小的单位,分别存放在一个个单独的段中,用户对表的访问便转化为对相对较小段的访问。
10.2.1 分区的概念
分区是指将表、索引等数据库对象划分为较小的可管理片段的技术,每个片断称为一个分区或子分区。每个分区存储在一个单独的段中,可分别进行管理。这些分区具有相同的逻辑结构,比如,一个分区表中的所有分区与表有相同的列定义和约束定义。
一个表被分区后,对表的查询操作可以局限于某个分区进行,而不是整个表,这样可以大大提高查询速度。例如,通信公司将用户通话信息记录在一个表中,在这个表中一年产生40GB的数据。假设要对用户的通话信息按照季度进行统计,那么这样的统计需要在全表范围内进行。如果对该表按季度进行分区,那么每个分区的大小平均为10GB左右,这样在进行统计时,只需要在10GB范围内进行。当在表上进行并行DML操作时,可以在所有分区上同时进行,同样可以大大减少处理时间。
尽管一个表的所有分区具有相同的结构,但是它们被单独存储在一个段中,这些段可以位于同一个表空间中,也可以位于不同的表空间中。将这些分区放在不同的表空间上具有以下的好处:
·减少了所有数据都损坏的可能性。
·可以针对每个分区单独进行备份和恢复。
·可以将同一个表中的数据分布在不同的磁盘上,从而均衡磁盘上的I/O操作。
·提高了表的可管理型、可利用性和访问效率。
在创建分区表时,以表中某个列或多个列的组合为依据,创建多个分区。表中的数据将按照分区列上数据的不同,分布在不同的分区中。目前Oracle支持的分区方法有以下几种:
·范围分区
·列表分区
·散列分区
·范围—散列分区
·范围—列表分区