• oracle的表分区


    /* 分区表 */

    优点:
    * 提高查询性能,执行查询时只需要访问分区
    * 易于管理和维护,各个分区在进行维护时是相互独立的,可以单独对分区进行重建索引,备份和恢复等操作.

    对表进行分区后,各个分区可以具有不同的存储参数,或者可以位于不同的表空间中.
    一个表可以分割成任意数目的分区,但如果在表中包含有LONG或者LONG RAW类型的字段,则不能进行分区

    如下情况需要对表进行分区
    1.表的大小超过2G
    2.需要对一个表进行并行的DML操作
    3.为了平衡硬盘I/O操作,需要将一个表分散存储在不同的表空间
    4.需要将表的一部分设置成只读,而另一部分为可更新的.

    oracle 9i有四种类型的分区表:范围分区,列表分区,散列分区,复合分区

    1.范围分区
    范围分区是按照分区字段中值的范围来对表进行分区,通常用于分区字段是日期类型的表

    create table sales_range
    (
     salesman_id number(5),
     salesman_name varchar2(30),
     sales_amount number(10),
     sales_data date
    )
    partition by range(sales_date)
    (
     partition pt_sales1999_q4 values less than
      (to_date('01/01/2000','DD/MM/YYY'))
      tablespace sale1999_q4,
      pctfree 0
      storage (initial 100M next 100M pctincrease 0)
     partition pt_sales2000_q1 values less than
      (to_date('01/04/2000','DD/MM/YYY'))
      tablespace sale2000_q1,
     partition pt_sales2000_q2 values less than
      (to_date('01/07/2000','DD/MM/YYY'))
      tablespace sale2000_q2,
     partition pt_sales2000_q3 values less than
      (to_date('01/10/2000','DD/MM/YYY'))
      tablespace sale2000_q3,
     partition pt_sales2000_q4 values less than
      (maxvalue)
      tablespace sale2000_q4,
    )
    storage (initial 50M next 50M pctincrease 0  maxentents 4096)
    nologging;

    oracle将认为NULL值大于一切其它非NULL值,如果字段的值可以为NULL,必须在某个分区中使用MAXVALUE关键字指定上限

    添加新的范围分区
    alter table sales_range 
     add partition pt_sales2000_q4 values less than
        (to_date('01/01/2001','DD/MM/YYYY'))
    tablespace sales2000_q4;

    2.列表分区(需要为每个分区指定一个列表取值)
    如果分区字段的值并不能划分范围,同时分区字段的取值范围只是一个包含少数值的集合,可以进行列表分区

    create table sales_list
    (
     salesman_id number(5),
     salesman_name varchar2(30),
     sales_amount number(10),
     sales_data date
    )
    partition by list(sales_state)
    (
     partition sales_west values in ('california','hawaii'),
     partition sales_east values in ('new york','virginia','florida'),
     partition sales_central values in ('texas','illionis'),
    )
    storage (initial 50M next 50M pctincrease 0  maxentents 4096)
    nologging;

    添加新的列表分区
    alter table sales_list 
     add partition sales_north values in ('motana','minnisota');

    /* 分区索引 */

    oracle中,可以为分区表建立三种类型的索引
    1.本地分区索引(为各个分区单独地建立索引分区,各个分区之间是相互独立的,用于DSS环境)
    2.全局分区索引(对整个分区表建立索引,然后再对索引进行分区,用于OLTP环境中)
    3.全局非分区索引(就是对应于一个分区表的普通的未分区的索引,作用与全局分区索引类似,用于OLTP环

  • 相关阅读:
    【读书笔记】程序员的自我修养总结(三)
    【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程
    【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程
    【读书笔记】程序员的自我修养总结(二)
    【读书笔记】程序员的自我修养总结(二)
    【读书笔记】程序员的自我修养总结(一)
    【读书笔记】程序员的自我修养总结(一)
    CMake生成VS2010工程相对路径和绝对路径问题说明
    CMake生成VS2010工程相对路径和绝对路径问题说明
    关于lib和dll
  • 原文地址:https://www.cnblogs.com/chuncn/p/1396362.html
Copyright © 2020-2023  润新知