继续上篇的学习
Oracle性能对象
要点:分区必须是在创建表的结构时指定,分区方式一旦指定是不能改变的。
分区方式:
1 范围分区
2 散列分区
3复合分区
3列表分区
表分区的优点:
一、改善表的查询性能
二、表更容易管理,表的数据存储在多个部分,按分区加载和删除数据更快
三、便于备份和恢复
四、提高数据安全性
-----------注意:要分区的表不能具有Long和Long raw数据类型
范围分区:根据表的某个列或一组列的值范围,决定将数据存储在那个分区
继续上篇的学习
Oracle性能对象
要点:分区必须是在创建表的结构时指定,分区方式一旦指定是不能改变的。
分区方式:
1 范围分区
2 散列分区
3复合分区
3列表分区
表分区的优点:
一、改善表的查询性能
二、表更容易管理,表的数据存储在多个部分,按分区加载和删除数据更快
三、便于备份和恢复
四、提高数据安全性
-----------注意:要分区的表不能具有Long和Long raw数据类型
范围分区:根据表的某个列或一组列的值范围,决定将数据存储在那个分区
Code
create table niegc_part
(
part_id integer primary key,
part_date date,
part_dec varchar2(100)
)
partition by range(part_date)--根据日期分区
(
partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dw1,
partition part_02 values less than(to_date('2007-01-01','yyyy-mm-dd')) tablespace dw2,
partition part_03 values less than(maxvalue) tablespace dw1
);
散列分区
散列分区通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区
,使行这些分区大小一致。如将part_id的数据根据自身的情况散列地存放在指定的二个表空间中:
Code
create table niegc_part
(
part_id integer primary key,
part_date date,
part_dec varchar2(100)
)
partition by hash(part_id)
(
partition part_01 tablespace dw1,
partition part_02 tablespace dw2
);
--系统将按part_id将记录散列地插入二个分区中,这里也就是二个不同的表空间中。
复合分区:范围分区和散列分区的结合
Code
--语法
partition by range(列1)
subpartition by hash(列2)
subpartition 分区数目 [tore in (表空间1,表空间2)]
(
partition part1 values less than (值1),
partition part2 values less than (maxvalue)
)
--例:对emp表的复合分区,先按薪资分再按部门分
partition by range(sal)
subpartition by hash(empno)
(
partition p1 values less than('1501')
(
subpartition sp1 tablespace a1,
subpartition sp2 tablespace a2
)
partition p2 values less than('3001')
(
subpartition sp3 tablespace a1,
subpartition sp4 tablespace a2
)
)
--查看表分区 select * from emp partition(p1)
select * from emp subpartition(sp1)
列表分区:允许用户明确地控制行到分区的映射
Code
--语法
partition by list(列名)
(
partition part1 values(值1),
partition part2 values(值2),
partition part3 values(default)
--default关键字用于存储前面的分区不能存储的记录
)
分区的维护操作
1.添加分区
alter table Table add partition 分区名 values less than (值)
如果边界是maxvalue 使用split partition语句
alter table Table split partition 分区名 at (值)
2.删除分区
alter table Table drop partition 分区名
3.截断分区 (只删除记录,不删除结构)
alter table Table truncate partition 分区名
4.合并分区
alter table Table merge partitions p1,p2 into partition p2
5.拆分分区
alter table Table split partition 分区1 at (值) into(partition 分区1,partition 分区2)
6.移动分区
alter table Table move partition 分区 tablespace(表空间名)