表和表空间
Oracle中表是存储数据的物理结构,从物理上来说度,一个表空间是由具体的一个或多个磁盘上数据文件构成的,从逻辑上来说一个表空间是由具体的一个或多个用户模式(Schema)下的表、索引等等里面的数据所构成的。
Oracle中的数据库不等同于MySQL中数据库的概念,Oracle中一个实例对应一个数据库,数据库中可以创建多个表空间,表空间可以分配多个用户,但是一个用户只能对应一个default tablespace。
什么是分区表
从逻辑上看分区表仍然是一个完整的表,但是在物理上,一个海量数据的分区表被划分为若干个不同的物理独立对象,Oracle的分区功能表、索引或索引组织表进一步细分为段,每个分区有自己的名称,存储特性,将数据存储在不同的物理磁盘,平衡磁盘I/O。在存储大量数据时为了进一步提高数据库的性能,在设计之初就可以合理的使用Oracle的分区功能。
推荐使用分区表的情况:
- 单表数据超过2g,不适用分区数据量继续增长不利于备份维护。
- 包括历史数据的表,比如最新的数据放入到最新的分区中。典型的例子:历史表,按照时间划分,只修改近期数据,而其他月份只读。
- 表的数据量过大,且查询频繁,其实类似于上面描述的历史数据的表。
Oracle中可以使用
select * from v$option
查看当前数据库版本是否支持分区表功能。
需要注意的是分区表需要在创建表的时候指定分区类型,已经创建的非分区表不能再修改为分区表。
Oracle 9i开始包括了2种复合分区,RANGE-HASH和RANGE-LIST,Oracle11g提供了4种复合分区:RANGE-RANGE、LIST-RANGE、LIST-HASH和LIST-LIST,Oracle 11g也是目前企业中应用最多的数据库版本,稳定,功能强大。