在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