oracle中的分区表

oracle中的分区表在系统中使用的频率不小,在一些数据量大的系统中更是频繁出现。html

提到分区表,首先就要理解下什么是分区。其实所谓的分区简单来讲就是分区域,分区表就是将一张表分区域存放。oracle

那么分区域中的区域又指的是哪里?性能

那就是传说中存放表的地方--->表空间。大数据

表空间:是一个或多个数据文件的集合,全部的数据对象都存放在指定的表空间中,但主要存放的是表, 因此称做表空间。日志

那么为何要把一张好好的表分开来存放。htm

当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会降低,这时就应该考虑对表进行分区。对象

表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个“表空间”(物理文件上),这样查询数据时,不至于每次都扫描整张表而只是从当前的分区查到所要的数据大大提升了数据查询的速度。blog

前面提到了,通常数据量大的系统中分区表的使用是比较频繁的。索引

那么通常咱们何时要创建分区表呢?事件

一、表的大小超过2GB。
二、表中包含历史数据,新的数据被增长到新的分区中。

使用表分区在解决大数据量表的基础上, 还有下面几个优势:

一、改善查询性能:对分区对象的查询能够仅搜索本身关心的分区,提升检索速度。
二、加强可用性:若是表的某个分区出现故障,表在其余分区的数据仍然可用;
三、维护方便:若是表的某个分区出现故障,须要修复数据,只修复该分区便可;
四、均衡I/O:能够把不一样的分区映射到不一样磁盘以平衡I/O,改善整个系统性能。

通常的普通表若是要转化为分区表,要用到oracle提供的在线重定义表。

能够参考文章:http://www.cnblogs.com/hfliyi/p/3626302.html

分区表中有一个概念,叫分区字段。那么如何确认分区字段,一张分区表的分区字段是根据什么来肯定的。

这里咱们只聊两种经常使用状况。

1. 按范围分区(好比说交易历史表中的交易完成时间,日志表中的事件发生时间)

2. 按列表分区(好比某张业务表中的状态值)

多说一句:选取分区字段和选取索引字段同样, 对这个字段的辨识度要求都比较高。

用数序上的极端分析来讲,一个字段的辨识度最低就是这个字段只有一个值,那么在这个上面作索引或者分区,那确定是狗血透了。

并且分区字段应该能保证表数据的分布基本上是均匀的, 若是有100w条数据,有一个状态列,只有一条状态是inactive的,其余都是active,那么这个字段虽然能够按列表分区,可是却达不到咱们创建分区表的目的。

相关文章
相关标签/搜索