jackyrong

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  在TOM老师的一书中,讲这部分还是比较详细的.但一般来说,基本的概念还是要很清晰的,因此笔记程序员日常要知道的东西
1 范围分区(range)

  CREATE TABLE range_example
( range_key_column date ,
  data             varchar2(20)
)
PARTITION BY RANGE (range_key_column)
( PARTITION part_1 VALUES LESS THAN
       (to_date('01/01/2005','dd/mm/yyyy')),
  PARTITION part_2 VALUES LESS THAN
       (to_date('01/01/2006','dd/mm/yyyy'))

 PARTITION part_3 VALUES LESS THAN
       (MAXVALUE)

)
/

  日常的按季度,月份等是range分区很好的例子了..注意上面的分区3,意思是其他值的话,就用分区3了
2 哈希分区
    就是根据hash来排了.
   CREATE TABLE hash_example
( hash_key_column   date,
  data              varchar2(20)
)
PARTITION BY HASH (hash_key_column)
( partition part_1 tablespace p1,
  partition part_2 tablespace p2
)
/

  注意的话,建hash分区,一定要是2的N次方才好,否则导致数据不均匀,TOM大师的书有很详细的测试,真是太好了.

 

3 列表分区
    主要是如果发现有的值比较离散的话,比如州,省和小范围数值,可以用这个.
    create table list_example
( state_cd   varchar2(2),
  data       varchar2(20)
)
partition by list(state_cd)
( partition part_1 values ( 'ME', 'NH', 'VT', 'MA' ),
  partition part_2 values ( 'CT', 'RI', 'NY' )

partition part_3 values (default);
)
/

  要注意的是,如果一旦有default分区,则不能向list分区里再增加其他分区了,必须先删除default分区.

4 组合分区
  CREATE TABLE composite_example
( range_key_column   date,
  hash_key_column    int,
  data               varchar2(20)
)
PARTITION BY RANGE (range_key_column)
subpartition by hash(hash_key_column) subpartitions 2
(
PARTITION part_1
     VALUES LESS THAN(to_date('01/01/2005','dd/mm/yyyy'))
     (subpartition part_1_sub_1,
      subpartition part_1_sub_2
     ),
PARTITION part_2
    VALUES LESS THAN(to_date('01/01/2006','dd/mm/yyyy'))
    (subpartition part_2_sub_1,
     subpartition part_2_sub_2
    )
)
/

 上面是先按subpartition中的hash先选出来,然后再按range分区选.

 

5 参考资料

     继续是itpub上的好东西fenqu

posted on 2008-07-20 10:05  jackyrong的世界  阅读(316)  评论(0编辑  收藏  举报