您的位置:首页 > 数据库 > Oracle

oracle11g复合分区创建方法(Interval版)

2015-12-30 14:35 465 查看
常见的分区类型

range:常用于自增长的列,如时间列

List:常用于唯一值较少的列,如省份

Hash:常用于唯一值较多的id列,例如手机号

由于Interval分区是针对range的,11g-12.1版本,目前只有Interval—*一共3种Interval的复合分区

range-list方法:

partition by range (updatetime)

interval (numtodsinterval(1,'day'))
subpartition by list(PSNCODE)

SUBPARTITION TEMPLATE(

SUBPARTITION REGION_1 values('038716'),

SUBPARTITION REGION_2 values('270719') )
(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd')))

注意:每个分区有2个子分区,分区的子分区需要手动添加

Interval分区目前测试,只支持range先分区的方式

range-hash方法:每个分区10个子hash分区(可以指定每个子分区到单独的表空间)

partition by range (updatetime)

interval(numtodsinterval(1,'day'))
subpartition by hash(PSNCODE)


SUBPARTITION template
( SUBPARTITION p1 TABLESPACE ts1
, SUBPARTITION p2 TABLESPACE ts2
, SUBPARTITION p3 TABLESPACE ts3
, SUBPARTITION P4 TABLESPACE ts4
)

(partition p1 values less than(to_date('2014-05-01','yyyy-mm-dd')))

注意:这种方式可以实现完全自动的分区,非常适合自增长特性的10位数以上的大表

hash分区最好是2的次方个,不然数据会分布不均


range-range方法:子分区需要手动添加,这种分区需要一般比较少见

PARTITION BY RANGE (time_id)

INTERVAL (NUMTODSINTERVAL(1,'DAY'))

SUBPARTITION BY RANGE(amount_sold)

   SUBPARTITION TEMPLATE

   ( SUBPARTITION p_low VALUES LESS THAN (1000)

   , SUBPARTITION p_medium VALUES LESS THAN (4000)

   , SUBPARTITION p_high VALUES LESS THAN (8000)

   , SUBPARTITION p_ultimate VALUES LESS THAN (maxvalue)

   )

 (PARTITION before_2000 VALUES LESS THAN (TO_DATE('01-JAN-2000','dd-MON-yyyy')) )


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: