Oracle表分区

Posted gdpuzxs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle表分区相关的知识,希望对你有一定的参考价值。

  当数据非常庞大的时候,比如,要查询ID<1000的时候,如果不使用表分区的话,需要全表扫描(判断每条记录的ID是否小于1000),这样大大影响了查询的速度。创建索引是性能调优的方法,同样,表分区也是。每个分区都是独立的一个段,可以放在不同的表空间下面。

  表分区有以下优点:

  (1)由于将数据分散到各个区中,减少了数据损坏的可能性。

  (2)可以对单独的分区进行数据的备份与恢复。

  (3)可以将分区分散到不同的物理磁盘,来分散IO。

  (4)提高数据库管理与性能。

  oracle提供了以下几种分区方法:

  (1)范围分区(range)  (2)哈希分区(hash)   (3)列表分区(List) (4)范围-哈希分区   (5)范围-列表分区

  range分区:就是根据表的某个字段值范围进行分区。 如下:创建分区表,根据ID的值进行分区,如果某些值暂时无法预测,可以使用maxvalue。

create table testpartition(id number,name varchar(100)) partition by range(id)
(
       partition p1 values less than (10),
       partition p2 values less than (20),
       partition p3 values less than (30),
       partition p4 values less than (maxvalue)
)

  查看用户表分区情况:

select * from user_tab_partitions

  

  插入数据:

insert into testpartition values(15,\'zhengxisheng\')

insert into testpartition values(5,\'jisheng\')

insert into testpartition values(32,\'jidong\')

  查询各个分区的数据:

select * from testpartition partition(p2)

  

  更新数据:报错如下:

update testpartition set id =\'12\' where  id =\'5\'

  

  需要成设置可移动的分区:

alter table testpartition enable row movement

update testpartition set id =\'12\' where  id =\'5\'

  再次查询分区p2的数据:

  

以上是关于Oracle表分区的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE有关表分区的一些维护性操作

MySQL 表数据分区,每10000条数据自动分区

oracle数据库如何查看表的表分区的信息(每个表分区的名字和所属表空间)

oracle 大表时间分区

oracle 查询哪些表分区

oracle表分区问题 做过数据库表分区的高手请进,非常感谢