oracle表分区详解

2021/5/21 19:28:29

本文主要是介绍oracle表分区详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

概念

当表中数量不断增大时,查询速度很很慢,这时候应该考虑对表进行分区

表分区之后逻辑上还是一张完整的表,只是将表中数据在物理上存放到多个位置上,这样在查询时不至于每次都扫描整张表

优点

1)提高查询速度,可以只对某个分区进行搜索而不是搜索整张表

2)解耦,如果某个分区出现故障,其他分区仍然可以使用

3)维护方便,如果某个分区出现故障,那么只修复该分区即可

4)通过分布存储表数据,可以平衡IO,改善整个系统的性能

分区表的种类

1)范围分区

范围分区是基于范围将数据映射到每个分区,这种分区方式最常用,通常分区键使用日期,当然也可以是其他

例如

按行分区

SQL> CREATE TABLE part_andy1
    (
        andy_ID NUMBER NOT NULL PRIMARY KEY,
        FIRST_NAME  VARCHAR2(30) NOT NULL,
        LAST_NAME   VARCHAR2(30) NOT NULL,
        PHONE        VARCHAR2(15) NOT NULL,
        EMAIL        VARCHAR2(80),
        STATUS       CHAR(1)
    )
   PARTITION BY RANGE (andy_ID)
   (
       PARTITION PART1 VALUES LESS THAN (10000) ,
       PARTITION PART2 VALUES LESS THAN (20000)
   );

按时间分区

SQL> CREATE TABLE part_andy2
    (
    ORDER_ID      NUMBER(7) NOT NULL,
    ORDER_DATE    DATE,
    OTAL_AMOUNT NUMBER,
    CUSTOTMER_ID NUMBER(7),
    PAID           CHAR(1)
    )
    PARTITION BY RANGE (ORDER_DATE)
   (
     PARTITION p1 VALUES LESS THAN (TO_DATE('2014-10-1', 'yyyy-mm-dd')) ,
     PARTITION p2 VALUES LESS THAN (TO_DATE('2015-10-1', 'yyyy-mm-dd')) ,
     PARTITION p3 VALUES LESS THAN (TO_DATE('2016-10-1', 'yyyy-mm-dd')) ,
     partition p4 values less than (maxvalue)
   );

2)Hash分区

通过hash算法计算出某条数据应该放在哪个分区,在oracle如果使用hash分区只需要指定分区的数量即可,一般建议分区的数量是2的n次方,这样数据会更加均匀

--按hash分区
SQL> create table part_andy3
  2  (
  3  transaction_id number primary key,
  4  item_id number(8) not null
  5  )
  6  partition by hash(transaction_id)
  7  (
  8  partition part_01 ,
  9  partition part_02 ,
 10  partition part_03
 11  );

3)list分区

创建list分区时需要确定列中可能存在的值,通常在使用list分区时需要创建一个default分区存储那些不在指定范围内的记录

-- 按list分区
SQL> create table part_andy4
  2  (
  3  id varchar2(15 byte) not null,
  4  city varchar2(20)
  5  )
  6  partition by list (city)
  7  (
  8  partition t_list025 values ('beijing'),
  9  partition t_list372 values ('shanghai') ,
 10  partition t_list510 values ('changsha'),
 11  partition p_other values (default)
 12  );

4)组合分区

即是上面三种分区的组合



这篇关于oracle表分区详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程