oracle表分区详解

当数据库表中的数据量增大时,查询性能可能会下降。为了解决这个问题,可以采用表分区技术。分区表逻辑上仍为一张完整表,但在物理上将数据分散存储,从而提高查询速度,减少全表扫描。分区类型包括范围分区、哈希分区和列表分区,每种都有其特定应用场景。范围分区常用于日期字段,而哈希分区则能实现数据均衡分布。此外,分区还能增强系统的容错性和IO平衡。通过合理选择分区策略,可以有效提升数据库性能。
摘要由CSDN通过智能技术生成

概念

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

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

优点

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

2)解耦,如果某个分区出现故障,其他分区仍然可以使用,且只要修复故障分区即可

3)通过分布存储表数据,可以平衡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)组合分区

即是上面三种分区的组合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值