分区表

2014-11-24 17:08:24 · 作者: · 浏览: 0
1. 分区的概念: 分区是指将数据量巨大的表或索引分隔为多个较小的、可以独自管理的部分,分隔出来的部分称为原表的分区 对于大型的表或索引而言,采用分区技术在执行DDL 操作时可以简化管理操作,同时还可以大大提高查询等操作的性能 表或者索引是否采用分区管理,对于DML操作(INSERT、UPDATE、DELETE和SELECT等)是完全透明的,管理数据记录的SQL 语句也不需要进行调整
注:DML----Data Manipulation Language 数据维护操纵语言
	如insert,delete,update,select(插入、删除、修改、检索)

	DDL----Data Definition Language 数据库定义语言 
	如 create procedure之类

	DCL----Data Control Language 数据库控制语言
	如grant,deny,revoke等,只有管理员才有这样的权限。

2. 分区的优点 1.高可用性:如果表的一个分区由于 系统故障而不能使用,表的其余好的分区仍然可以使用;如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,故能比整个大表修复花的时间更少; 2.维护方便:对于大型的历史数据表,将其分区,分别管理和方便地添加和删除; 3.均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能;对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快; 4.分区对用户透明,最终用户感觉不到分区的存在。
3.分区的方式 分区的方式包括:范围分区、列表分区、散列分区和复合分区;
4.建立分区表的语法格式与建立非分区表类似,只是在语句末尾增加PARTITION BY 子句,如下例:

-- 按照日期、数值字段值的范围分区

CREATE TABLE SALES( …… )

PARTITION BY RANGE(salesdate)(

PARTITION PT1 VALUES LESS THAN(TO_DATE(……)) TABLESPACE TSPACE1,

PARTITION PT2 VALUES LESS THAN(TO_DATE(……)) TABLESPACE TSPACE2,

PARTITION PT2 VALUES LESS THAN(MAXVALUE) TABLESPACE TSPACE3

);

-- 按照字符字段值的列表分区

CREATE TABLE SALES(……)

PARTITION BY LIST(saleslocate)(

PARTITION PT1 VALUES (’xi’an’,’lanzhou’) TABLESPACE TSPACE1,

PARTITION PT2 VALUES (’shijiazhuang’,’zhengzhou’,’taiyuan’) TABLESPACE TSPACE2,

PARTITION PT2 VALUES (DEFAULT) TABLESPACE TSPACE3

);

-- 按照某个字段的散列码分区

CREATE TABLE SALES(……)

PARTITION BY HASH(salesman)(

PARTITION PT1 TABLESPACE TSPACE1,

PARTITION PT2 TABLESPACE TSPACE2,

PARTITION PT2 TABLESPACE TSPACE3

);

复合分区有 范围-哈希 和 范围列表两种

--创建范围-哈希分区表示例

create table my_talbe10(

t_id number primary key,

t_num number not null,

t_info varchar2(20) not null

)

partition by range(t_num) subpartition by hash(t_info)

(

partition p1 values lessthan(1000)(

subpartition p11 tablespacemy_space,

subpartition p12 tablespace my_space2

) ,

partition p3 values lessthan(maxvalue) tablespace users(

subpartition p31,

subpartition p32

)

);