Oracle 数据库表分区

 oracle数据库表分区总结

一、基本概念

表空间:一个或多个数据文件的集合,所有数据对象(表)都存储在指定的表空间中。

分区表:当一个表中的数据量达到一定程度后,查询速度会变慢,影响应用的性能,此时可以考虑进行表分区,分区后逻辑上还是一张表,只是将数据在物理上存放到多个表空间,这样查询时不用每次都整表扫描。

二、表分区

(1)优点

  • 提高查询速度:对分区数据查询时,只用扫描该分区数据
  • 增强可用性:表的某些分区发生故障,不影响其他正常的分区数据使用
  • 方便维护管理:表的某些分区发生故障,只需对故障分区进行修复
  • 均衡I/O:可以把不同分区的数据映射到磁盘以平衡I/O

 (2) 方法

a、范围分区

将表数据通过某字段的数据范围进行分区,如根据时间进行分区等

 1 CREATE TABLE CUSTOMER 
 2 ( 
 3     CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY, 
 4     FIRST_NAME  VARCHAR2(30) NOT NULL, 
 5     LAST_NAME   VARCHAR2(30) NOT NULL, 
 6     PHONE        VARCHAR2(15) NOT NULL, 
 7     EMAIL        VARCHAR2(80), 
 8     STATUS       CHAR(1) 
 9 ) 
10 PARTITION BY RANGE (CUSTOMER_ID) 
11 ( 
12     PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, 
13     PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 
14 )

b、列表分区

该分区适用于表中某列只有少数的值的情况,如性别等

 1 CREATE TABLE PROBLEM_TICKETS 
 2 ( 
 3     PROBLEM_ID   NUMBER(7) NOT NULL PRIMARY KEY, 
 4     DESCRIPTION  VARCHAR2(2000), 
 5     CUSTOMER_ID  NUMBER(7) NOT NULL, 
 6     DATE_ENTERED DATE NOT NULL, 
 7     STATUS       VARCHAR2(20) 
 8 ) 
 9 PARTITION BY LIST (STATUS) 
10 ( 
11       PARTITION PROB_ACTIVE   VALUES ('ACTIVE') TABLESPACE PROB_TS01, 
12       PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
13 )

c、散列分区

该分区适用于当表中某列没有合适的条件时,使用散列算法决定数据放入哪一分区。

 1 CREATE TABLE HASH_TABLE 
 2 ( 
 3   COL NUMBER(8), 
 4   INF VARCHAR2(100) 
 5 ) 
 6 PARTITION BY HASH (COL) 
 7 ( 
 8   PARTITION PART01 TABLESPACE HASH_TS01, 
 9   PARTITION PART02 TABLESPACE HASH_TS02, 
10   PARTITION PART03 TABLESPACE HASH_TS03 
11 )

猜你喜欢

转载自www.cnblogs.com/nox-np/p/9651408.html