oracle 什么时候会用到表分区?

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:08:04
最近听说oracle中有表分区的概念,表分区貌似就是把一张表的不同字段放在不同的地方,这样可以提高查询效率?既然表分区能提高效率,是不是所有的表都应该进行表分区呢?

比如说有一个学生表t_student:
create table t_student{
id int primary key,
ename varchar2(20),
password varchar2(20),
sex number(1),
major varchar2(20),
age int,
....还有其他字段
}

这张表应该如何进行表分区?字段的值也没什么规律啊?

为什么要使用表分区:
在实际开发中,往往一个表里的数据量特别大。上百万千万的数量级。如果将这些数据放在一个物理文件内(就是表的物理存储文件)实在太大了。我们就可以使用表分区。
比如说我把表中数据有“姓名,身份证号”的放在一个物理文件内,其它的放在另外物理文件内。这样,虽然这仍然是一张表内的数据,但是在物理结构上是分开的。
分区有2中方式,一种是按行分区。比如前一万行分一个区,后一万行分一个区。
第二种是按字段分区。这个也容易理解。
Oracle的结构是:数据块->区->段->表空间。以此为包含关系。表空间中一个表(没有分区)就用一个段来存储数据(实际上总共有4个段来存储这个表,其中一个段是数据段,就是你所问的专门储存表数据的段,其它三个段有别的用处,你可以自己查下)。而分区的表在每个分区都有个独立的数据段很容易理解。每个分区都有表的数据,肯定每个分区都要有个数据段储存数据啊

如何分区主要有如下的方式:
range +hash 分区方式
用EXP/IMP方式
在线重定义

不过最好是根据业务进行分区

分区表是将大表的数据分成称为分区的许多小的子集,如果你的表中记录很少,是没必要的

表分区用在超大型数据表。
我这有张表每个月长一亿笔资料都没考虑用表分区

分区有时间字段为最佳,像你这个可新增一个字段入学时间