Oracle实践-PL/SQL基础之表分区
PL/SQL基础入门之表分区
PL/SQL:过程语言(Procedure Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性。
------------------------------------------------------------------------------------------------------------
表分区
/*
分区:Oracle允许用户将一个表分成多个分区,与表的创建一起
优点:1.用户可以执行查询,只访问其中特定的分区;
2.将不同的分区存储在不同的磁盘,提高访问性能和安全性
3.可以独立备份和恢复分区。
*/
1.范围分区:以表中一个列或一组列的值得范围分区
--关键字:partition by range values less than
create table person1( pid number primary key, birthday date ) partition by range (birthday)( partition p1 values less than (to_date('1980-01-01','yyyy-mm-dd')), partition p2 values less than (to_date('1990-01-01','yyyy-mm-dd')), --partition p1 values less than (maxvalue) ) insert into person1 values(1,'ysjian',to_date('1965-02-03','yyyy-mm-dd')); insert into person1 values(2,'ysjian',to_date('1985-02-03','yyyy-mm-dd')); insert into person1 values(3,'ysjian',to_date('1995-02-03','yyyy-mm-dd')); select * from person1 partition(p2);
2.散列分区:允许用户对不具有逻辑范围的数据进行分区,关键字:hash
--通过在分区键上执行hash函数决定存储的分区,将数据平均分配到不同的分区
create table person2( pid number primary key, pname varchar2(20), birthday date ) partition by hash(birthday)( partition p1 [TABLESPACE tbs1], partition p2 [TABLESPACE tbs2], partition p3 [TABLESPACE tbs3] )
3.列表分区:允许用户将不相关的数据组织在一起,关键字:list,values
create table person3( pid number primary key, birthday date, address varchar2(50) ) partition by list(address)( partition hubei values('武汉','黄石','黄冈'), partition shanxi values('西安','渭南','宝鸡') )
4.复合分区:关键字:subpartition
create table person4( pid number primary key, birthday date, address varchar2(50) ) partition by range(birthday) subpartition by hash(birthday) subpartitions4( partition p1 values less than (to_date('1980-01-01','yyyy-mm-dd')), partition p2 values less than (to_date('1990-01-01','yyyy-mm-dd')), partition p3 values less than (to_date('2000-01-01','yyyy-mm-dd')) )
--分区的维护:
1.新增分区:在最后一个分区之后添加新分区
alter table person1 add partition P4 values less than (4000);
2.删除分区:删除一个指定的分区,分区的数据也随之删除
alter table person1 truncate partition P3;
3.截断分区:删除指定分区中的所有记录,不记录日志,不可恢复
alter table person1 truncate partition P3;
4.合并分区 -将范围分区或复合分区的两个相邻分区连接起来
alter table person1 merge partitions p1, p2 into partition p2;
5.拆分分区 -将一个大分区中的记录拆分到两个分区中
alter table person1split partition p2 AT (1500) into (partition P21,partition P22);
/*
表分区允许将一个表划分成几部分,以改善大型应用系统的性能
分区方法包括范围分区、散列分区、复合分区和列表分区
分区维护操作包括添加、删除、截断、合并和拆分分区
*/
文章来源:http://blog.****.net/ysjian_pingcx/article/details/25646805