一、使用场景
1、表的大小超过2GB。
2、 表中包含历史数据,新的数据被增加到新的分区中。
二、 优缺点
优点:
1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度;
2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
4、均衡I/O:可以把不同的分区映射到不同磁盘以平衡I/O,改善整个系统性能。
缺点:
分区表相关:已经存在的表没有方法可以直接转化为分区表。不过 Oracle 提供了在线重定义表的功能。
三、相关视图
1、 显示分区表信息
DBA_PART_TABLES
2、 显示表分区信息 显示数据库所有分区表的详细分区信息
DBA_TAB_PARTITIONS
3、 显示子分区信息 显示数据库所有组合分区表的子分区信息
DBA_TAB_SUBPARTITIONS
4、 显示分区列 显示数据库所有分区表的分区列信息
DBA_PART_KEY_COLUMNS
5、 显示子分区列 显示数据库所有分区表的子分区列信息
DBA_SUBPART_KEY_COLUMNS
四、分区表的不同类型
4.1 RANGE分区表
根据指定值的范围分区,每一个分区都必须有一个VALUES LESS THEN子句,指定一个不包括在该分区中的上限值,分区键的任何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中。
# 使用时间列来做分区列
create table part_range_t1(
id number,
name varchar2(20),
birthday date)
partition by range(birthday)(
partition p1 values less than(to_date('2001-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')),
partition p2 values less than(to_date('2002-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')),
partition p3 values less than(to_date('2003-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'))
)
# 查询分区表的信息
select table_owner,table_name,partition_name,tablespace_name from dba_tab_partitions where table_name = 'PART_RANGE_T1';
# 查询分区类型
select table_name,partitioning_type from dba_part_tables where table_name = 'PART_RANGE_T1';
# 使用数字列做为分区列
create table p_t3(
n number,
name varchar2(20))
partition by range(n)(
partition p1 values less than(1000),
partition p2 values less than(10000),
partition p3 values less than(maxvalu