在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