全面學習分割槽表及分割槽索引(6)--建立range-list組合分割槽

junsansi發表於2008-05-14

建立range-list組合分割槽

Range-list組合分割槽的建立與range-hash極為相似,只是子分割槽為list分割槽,當然同樣也可以應用分割槽模板,下面也舉一個示例:

JSSWEB> create table t_partition_rl (id number,name varchar2(50))

  2  partition by range(id) subpartition by list(name)

  3  subpartition template (

  4   subpartition l1 values ('aa') tablespace tbspart01,

  5   subpartition l2 values ('bb') tablespace tbspart02,

  6   subpartition l3 values ('cc') tablespace tbspart03,

  7   subpartition l4 values ('dd') tablespace tbspart04)(

  8  partition t_r_p1 values less than (10) tablespace tbspart01,

  9  partition t_r_p2 values less than (20) tablespace tbspart02,

 10  partition t_r_p3 values less than (30) tablespace tbspart03,

 11  partition t_r_pd values less than (maxvalue) tablespace tbspart04);

表已建立。

JSSWEB> select partition_name,subpartition_name,tablespace_name

  2  from user_tab_subpartitions where table_name='T_PARTITION_RL';

PARTITION_NAME  SUBPARTITION_NAME              TABLESPACE_NAME

--------------- ------------------------------ --------------------

T_R_P1          T_R_P1_L4                      TBSPART01

T_R_P1          T_R_P1_L3                      TBSPART01

T_R_P1          T_R_P1_L2                      TBSPART01

T_R_P1          T_R_P1_L1                      TBSPART01

T_R_P2          T_R_P2_L4                      TBSPART02

T_R_P2          T_R_P2_L3                      TBSPART02

T_R_P2          T_R_P2_L2                      TBSPART02

T_R_P2          T_R_P2_L1                      TBSPART02

T_R_P3          T_R_P3_L4                      TBSPART03

T_R_P3          T_R_P3_L3                      TBSPART03

T_R_P3          T_R_P3_L2                      TBSPART03

T_R_P3          T_R_P3_L1                      TBSPART03

T_R_PD          T_R_PD_L4                      TBSPART04

T_R_PD          T_R_PD_L3                      TBSPART04

T_R_PD          T_R_PD_L2                      TBSPART04

T_R_PD          T_R_PD_L1                      TBSPART04

已選擇16行。

其它方式的建立對於range-list同樣好使,這裡不再舉例,如有不明,請自學複習前章range_hash組合分割槽。

對於複合分割槽的local索引,我們也舉一個示例,檢視其分割槽情況:

SQL> create index idx_part_rl_id on t_partition_rl(id) local;

索引已建立。

又可以學幾個資料字典:user_part_indexes、user_ind_partitions前面已經認識了,user_ind_subpartitions用來查詢索引的子分割槽資訊。

SQL> select table_name,partitioning_type,

  2         partition_count,def_subpartition_count

  3    from user_part_indexes

  4   where index_name = 'IDX_PART_RL_ID';

TABLE_NAME                     PARTITI PARTITION_COUNT DEF_SUBPARTITION_COUNT

------------------------------ ------- --------------- ----------------------

T_PARTITION_RL                 RANGE                 4                      4

SQL> select partition_name, subpartition_count, high_value

  2    from user_ind_partitions

  3   where index_name = 'IDX_PART_RL_ID';

PARTITION_NAME  SUBPARTITION_COUNT HIGH_VALUE

--------------- ------------------ ---------------

T_R_P1                           4 10

T_R_P2                           4 20

T_R_P3                           4 30

T_R_PD                           4 MAXVALUE

SQL> select partition_name, subpartition_name, high_value, tablespace_name

  2    from user_ind_subpartitions

  3   where index_name = 'IDX_PART_RL_ID';

PARTITION_NAME  SUBPARTITION_NAME              HIGH_VALUE      TABLESPACE_NAME

--------------- ------------------------------ --------------- --------------------

T_R_P1          T_R_P1_L1                      'aa'            TBSPART01

T_R_P1          T_R_P1_L2                      'bb'            TBSPART01

T_R_P1          T_R_P1_L3                      'cc'            TBSPART01

T_R_P1          T_R_P1_L4                      'dd'            TBSPART01

T_R_P2          T_R_P2_L1                      'aa'            TBSPART02

T_R_P2          T_R_P2_L2                      'bb'            TBSPART02

T_R_P2          T_R_P2_L3                      'cc'            TBSPART02

T_R_P2          T_R_P2_L4                      'dd'            TBSPART02

T_R_P3          T_R_P3_L1                      'aa'            TBSPART03

T_R_P3          T_R_P3_L2                      'bb'            TBSPART03

T_R_P3          T_R_P3_L3                      'cc'            TBSPART03

T_R_P3          T_R_P3_L4                      'dd'            TBSPART03

T_R_PD          T_R_PD_L1                      'aa'            TBSPART04

T_R_PD          T_R_PD_L2                      'bb'            TBSPART04

T_R_PD          T_R_PD_L3                      'cc'            TBSPART04

T_R_PD          T_R_PD_L4                      'dd'            TBSPART04

已選擇16行。

還是與表的分割槽格式一樣,不管是普通分割槽還是複合分割槽,local索引都沒啥自主權啊。

公共準則

1、如果選擇的分割槽不能確保各分割槽內記錄量的基本平均,則這種分割槽方式有可能是不恰當的。

比如對於range分割槽,假設分了10個分割槽,而其中一個分割槽中的記錄數佔總記錄數的90%,其它9個分割槽只佔總記錄數的10%,則這個分割槽方式就起不到資料平衡的作用。當然,如果你的目的並不是為了平衡,只是為了區分資料,ok,對於這種情況,我想說的是,你務必要意識到存在這個問題。

2、對於分割槽的表或索引,其所涉及的所有分割槽,其塊大小必須一致。

最後,建議對於上面建立的表或建表指令碼妥善儲存並記憶,後面我們需要頻繁用到,後續示例將均主要依賴前文中建立的表進行:)

=======================================

檢視前面的連載:

(5)--建立range-hash組合分割槽(1)

(4)--建立list分割槽

(3)--建立hash分割槽

(2)--建立range分割槽

(1)--前言

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-266479/,如需轉載,請註明出處,否則將追究法律責任。

相關文章