ORACLE分区技术
Oracle允许把一个大表分成几部分,每部分叫一个分区,然后把每个部分放在不同的物理磁盘上,以提高整个数据库的性能。
Ø 分区技术有下面的优点
1. 使数据库的可管理性变得更加容易,如:用户可以往一个单独的分区中装载数据,而对其他分区没有任何影响;用户可以再单独的分区上创建索引等。
2. 可以提高表的查询性能,SQL语句的WHERE子句会过滤掉不需要的分区,Oracle不会再扫描那些不需要的分区。
3. 减少数据的不可用时间,用户可以单独地维护一个分区中的数据,而不影响其他分区中数据的使用。
4. 在数据库级完成,几乎不需要对应用程序做任何修改。
Ø 根据不同的需求,Oracle提供下面几种分区方法。
1. 范围分区(Range Partitioning),范围分区根据表中列值的范围将整个表分成不同的部分,如:按照时间进行范围分区。
2. 哈希分区(Hash Partitioning),哈希分区使用哈希函数把表分成几部分。
3. 列表分区(List Partitioning),列表分区使用列表值将表划分成几部分。
SQL语句:
创建表空间
SQL>create tablespace a1 logging datafile'/oracle/app/oradata/a1.dbf' size 10m;
SQL>create tablespace a2 logging datafile'/oracle/app/oradata/a2.dbf' size 10m;
SQL>create tablespace a3 logging datafile'/oracle/app/oradata/a3.dbf' size 10m;
SQL>create tablespace a4 logging datafile'/oracle/app/oradata/a4.dbf' size 10m;
以范围分区的方式创建表
SQL>CREATE TABLE sales
(invoice_no NUMBER,
sale_year INT NOT NULL,
sale_month INT NOT NULL,
sale_day INT NOT NULL)
PARTITION BY RANGE(sale_year)
(PARTITION P1 VALUES LESS THAN(2000)
TABLESPACE A1,
PARTITION P2 VALUES LESS THAN (2001)
TABLESPACE A2,
PARTITION P3 VALUES LESS THAN (2002)
TABLESPACE A3,
PARTITION P4 VALUES LESS THAN(2003)
TABLESPACE A4);
PARTITION BY 指定分区方式
RANGE 表示范围分区
PARTITION 指定分区的名字
VALUES LESS THAN 指定分区上限
TABLESPACE 指定分区的存放位置
以哈希的方式创建表
SQL>CREATE TABLE dept (deptno NUMBER,deptname VARCHAR(32))
PARTITION BY HASH (deptno)
(PARTITION P1 TABLESPACE A1,
PARTITION P2 TABLESPACE A2,
PARTITION P3 TABLESPACE A3,
PARTITION P4 TABLESPACE A4);
PARTITION BY HASH 表示按照哈希进行分区
PARTITION 用于指定分区的名字
TABLESPACE 指定分区的存放位置
以列表分区的方式创建表
SQL>CREATE TABLE city (item INTEGER,qty INTEGER,
store_name VARCHAR(30),city VARCHAR (20),
sale_date DATE)
PARTITION BY LIST (city)
(PARTITION region_east
VALUES ('hangzhou','shanghai')
TABLESPACE A1,
PARTITION region_west
VALUES ('chengdu','chongqing')
TABLESPACE A2,
PARTITION region_south
VALUES ('guangzhou','guilin')
TABLESPACE A3);
PARTITION BY LIST 表示按列表进行划分
PARTITION 指定分区的名字
TABLESPACE 指定分区存放的表空间