表设计(二)

来源:互联网 发布:java 打jar包 编辑:程序博客网 时间:2024/06/05 10:55

散列分区

create table hash_t (id number, deal_date date ,area_code number , contents varchar2(4000))

                                 partition by hash(deal_date)

                                 partitions 12;

        1.散列分区的关键字为 partition by hash 

     2.散列分区与之前两种分区的明显差别在于:没有指定分区名,而仅仅是指定了分区的个数,如partitions 12

3.散列分区的个数尽量设置为偶数个,如本例的12.如果是11或13个就不妥了,具体原因和Oracle内部架构有关。

     4.可以指定散列分区的分区表空间,比如增加如下一段:store in (t1,t2,t3,t4)表示分别存在不同的表空间


组合分区

 create table range_t (id number,deal_date date,area_code number,contents varchar2(4000))

                     pratition by range(deal_date)

                     subpartition by list(area_code)

     subpartition template

                   (subpartition P_591 values (591), 

    subpartition P_592 values (592),

    subpartition P_593 values (593),

             subpartition p_other values (default) )

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

                    partition p2 values less than (to_date('2014-03-01','yyyy-mm-dd')),

                    partition p_max values less than (maxvalue)

                  );

1.组合分区是由主分区和从分区组成,比如范围-列表 分区,就表示主分区是范围分区,二从分区是列表分区,从分区的关键字为subpartition

2.为了避免在每个主分区中都写相同的从分区,可以考虑用模板方式,比如本例的subpartition template 关键字

3.只要涉及子分区模块,都需要有subpratition关键字

4.关于表空间和之前的没有差别,依然可以指定,可以不指定


分区原理

   分区表会产生多个段,建立几个分区就有几个段,而普通表只有一个段。思想:化整为零,将大对象切割成多个小对象,从而使得在指定的小对象中定位到数据成为一种可能,最终达到减少访问路径,尽量少做事就能解决问题。


0 0
原创粉丝点击