分区表的用意是使大型表 分而治之。但是分区表是否一定会加快访问呢。
可能更慢,可能更快,可能没变化。
好处就是
一: 提高可用性
因为分区后分区的损坏不影响其它分区的使用,除非你一定要查找损坏分区的内容
二: 加快索引及数据重建速度。
如果你有一个100G表,有部分数据行迁移,行连接。要重建会很麻烦,如果做为分区表,只重建其中一个分区会很方便
三:并行dml 也是分区表的重要好处
oracle 对分区表进行并行的 insert,update或delete 操作,会大大加快速度。
四:查询速度的提升
1.分区消除(partition elimination),即不考虑其它分区的内容,如果以前10G的数据分为10个分区,现在就只找1G的数据。肯定会提高速度
SELECT * FROM t_par PARTITION(p1);
2.并行操作(parallel operation),分区表是在物理上把大表分开,在多cpu并且io 充足的情况下,并行操作的好处不言而喻。
表分区机制
目前Oracle中有4种对表分区的方法:
1、区间分区:通过数据范围进行分区。例如,时间戳在Jan-2005内的所有记录都存储在分区1中,时间戳在Feb-2005内的所有记录都存储在分区2中,依此类推。这可能是Oracle中最常用的分区机制。
2、散列分区:这是指在一个列(或多个列)上应用一个散列函数,行会按这个散列值放在某个分区中。
3、列表分区:指定一个离散值集,来确定应当存储在一起的数据。例如,可以指定STATUS列值在(’A’,’M’,’Z’)中的行放在分区1中,STATUS值在(‘D’,’P’,’Q’)中的行放在分区2中,依此类推。
4、组合分区:这是区间分区和散列分区的一种组合,或者是区间分区与列表分区的组合。通过组合分区,你可以先对某些数据应用区间分区,再在区间中根据散列或列表来选择最后的分区。
创建语句其本都相同,以区间分区为例
/***********************************
desc: 创建一个按时间分区的分区表
time: 2010-1-6
created:benson
***********************************/
查看用户分区表状态
select * from user_tab_partitions;
创建分区表按照时间分区
create table t_par(s_time date,id number)
partition by range(s_time)
(
partition pmax values less than(maxvalue) tablespace users
);
插入100条记录,100天的数据
insert into t_par
select to_date('2010-12-31','yyyy-mm-dd')-mod(rownum,100),
rownum
from dba_objects
where rownum<101;
按时间分为两个区p1,pmax
alter table t_par
split partition pmax at(to_date('2010-10-1','yyyy-mm-dd'))
into
(
partition p1,
partition pmax
);
查看p1分区,可以看到p1分区为 2010-10-1以前的数据
SELECT * FROM t_par PARTITION(p1);
插入一条2010-10-1日以前的数据。验证是否插入到了 partition p1中
insert into t_par values(to_date('2010-9-1','yyyy-mm-dd'),222);
验证数据
SELECT * FROM t_par PARTITION(p1);
我们一般会这样查看分区表
SELECT table_name,partition_name,u.high_value from user_tab_partitions u WHERE table_name NOT LIKE 'BIN%';
删除分区表
ALTER TABLE t_par DROP PARTITION p20100106;
分享到:
相关推荐
Oracle分区表详解 大家可以参考下 网上找的资料共享一下
oracle分区表总结oracle分区表总结oracle分oracle分区表总结区表总结oracle分区表总结
oracle 分区表管理oracle 分区表管理oracle 分区表管理oracle 分区表管理oracle 分区表管理
Hash分区是Oracle实现表分区的三种基本分区方式之一。对于那些无法有效划分分区范围的大表,或者出于某些特殊考虑的设计,需要使用Hash分区,下面介绍使用方法
公司内部培训ORACLE分区表使用的文档
导入导出 Oracle 分区表数据
主要介绍了oracle普通表转化为分区表的方法,官方给出了四种操作方法,本文主要对第四种方法进行详细分析,需要的朋友可以参考下。
Oracle 分区表全揭秘 ,非常详细,oracle dba可以看看
分区表类型介绍+各种类型分区表的创建举例
ORACLE分区表操作大全 ORACLE分区表操作大全
oracle表分区详解
本文档详细的讲解了在oracle中如何常见分区表以及遇到的几种问题,希望对大家用帮助
Oracle数据库分区表操作方法Oracle数据库分区表操作方法
深入学习分区表及分区索引(详解oracle分区).docx
Oracle分区表的简单说明以及举例说明其用法
详细讲解oracle分区表的各个步骤和命令
ORACLE 分区表 分区索引 索引分区 实例讲解
oracle分区表详解 ,包括:什么时候需要分区表、及各类型分区的应用实践
ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区
unix AIX 环境下 exp 备份 Oracle 分区表实例