分区表学习日记
引自:http://space.itpub.net/?uid-14941137-action-viewspace-itemid-628185
使用分区技术,Oracle允许把一个大表分成几部分,每个部分叫一个分区,然后把每个部分放在不同的物理磁盘,以提高整个数据库的性能。
每个分区还还可以再分成几份,这样产生的分区叫子分区(Subpartition)。分区表逻辑上还是一个整体。
分区技术有下面的优点:
1、分区技术使数据库的可管理性变得更加容易,如:用户可以往一个单独的分区中装载数据,而对其他分区没有任何影响;
用户可以在单独的分区上创建索引等
2、分区技术可以提高表的查询性能,SQL语句的where子句会过滤掉不需要的分区,Oracle不会再扫描那些不需要的分区。
3、分区技术减少数据的不可用的时间,用户可以单独地维护一个分区中的数据,而不是影响其他分区中数据的使用
4、分区技术在数据库级完成,几乎不需要对应用程序做任何修改
根据不同的需求,Oracle提供下面的几种分区方法:
范围分区(Range Partitioning),范围分区根据表中的列值的范围将整个表分成不同的部分,如:按时间进行范围分区
列表分区(List Partitioning),列表分区使用列表值将表划分成几部分
哈希分区(Hash Partitioning),哈希分区使用哈希函数把表分成几部分
复合分区(Composite Partitioning),复合分区同时使用两种分区方法对表进行分区
创建范围划分(Range Partition):范围分区时根据列值的范围对表进行分区
创建范围分区表sales
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 users,
partition p2 values less than (2001)
tablespace lmtbsb;
partition p3 values less than (2002)
tablespace bigtbs_01,
partition p4 values less than (2003)
tablespace tsseg_manual
);
创建哈希划分(Hash partition):哈希划分根据哈希值把表分成几个分区。创建哈希划分有两种方法:一种方法是指定分区数量;另外一种方法是指定分区的名字
方法一:指定分区数量
使用关键字Partitions指定分区的数量
create table dept(deptno number,deptname varchar(32))
partition by hash(deptno) partitions 4;
其中partition by hash 表示按照哈希(hash)进行划分,PARTITIONS指定分区数量,本例中的分区数量是4,Oracle会创建4个分区,但是,所有的分区都放在相同的表空间中。
方法二:指定分区的名字
创建具有4个哈希分区的分区表dept,每个划分存放在单独的表空间中。
CREATE TABLE dept (deptno NUMBER,deptname VARCHAR(32))
PARTITION BY HASH(deptno)
(PARTITION p1 TABLESPACE users,
PARTITION p2 TABLESPACE lmtbsb,
PARTITION p3 TABLESPACE bigtbs_01,
PARTITION p4 TABLESPACE tsseg_manual);
partition by hash表示按照哈希(Hash)进行分区。
partition用于指定分区的名字,第一个分区的名字是P1,第二个分区的名字是P2
tablespace指定分区的存放位置
创建列表划分(List partition):列表划分是根据列表值将表划分成几个分区
按照城市city对表sales均进行划分,共分成3个区:
杭州和上海的数据在一个分区;
成都和重庆的数据在一个分区;
广州和桂林的数据在一个分区
CREATE TABLE sales(item Integer,qty integer,
store_name VARCHAR(30),city VARCHAR2(20),
sale_date DATE)
PARTITION BY LIST (city)
(
PARTITION region_east
VALUES ('杭州','上海')
TABLESPACE users,
PARTITION region_west
VALUES ('成都','重庆')
TABLESPACE lmtbsb,
PARTITION region_south
VALUES ('广州','桂林')
TABLESPACE bigtbs_01
);
其中,partition by list表示按列表进行划分;partition指定分区的名字,第一个个分区的名字是region_east
values指定列表的值
如何往一个分区表添加新的分区:
1、往范围分区中添加一个新的分区
alter table sales3
add partition p2001
values less than (2001)
tablespace product;
2、往列表分区中添加一个新的分区
alter table sales3
add partition hk
values('HK');
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/276487/viewspace-628473/
,如需转载,请注明出处,否则将追究法律责任。