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 )