Oracle分区表详解,实用干货

简介: Oracle分区表详解,实用干货

1.概述


分区:将比较大的表或者索引拆分成更小、更易于管理的片段。
每个分区对应一个 segment;
每个分区可以存储在独立的表空间(多个空间中);
可以为分区表创建 local 或 golbal 索引。
单张表超过 2G,表中包含大量历史数据或者需要将表中数据存储在不同存储介质中时,
可以考虑使用分区表。


2.分区功能


1、增强性能
分区裁剪(Partition Pruning):可以访问具体分区的数据而避免访问整张表。
智能连接(Partition-Wise Joins):分区表和分区表关联查询,可以实现分区和分区之间的关联。
2、易于管理
提供了更小的管理单元,便于历史数据的管理。
3、提高可用性
不同分区可以存储在不同的表空间,分区之间相互独立,单个分区不可用不影响其他分区,可以对单独的分区进行备份恢复操作。


3.分区类型


3.1 范围分区


按照分区键值的范围,将数据存储在不同分区,
分区键一般是 date 或 number 类型,比较容易判断记录所在的分区,
每个分区的记录数可能不均衡。
create table t_range
partition by range (sal)
(
partition p1 values less than (1000),
partition p2 values less than (2000),
partition p3 values less than (3000)
) as select * from emp where 1=2;
##查询分区
SCOTT@ORCL> select * from t_range partition (p1);
SCOTT@ORCL> select * from t_range partition (p2);
SCOTT@ORCL> select * from t_range partition (p3);
##增加分区
SCOTT@ORCL> alter table t_range add partition PMAX values less than (maxvalue);
##split分区
alter table T_RANGE split PARTITION PMAX AT(5000)
INTO (PARTITION P5,PARTITION PMAX) UPDATE GLOBAL INDEXES;
##跨分区update
SCOTT@PROD> alter table t_range enable row movement;
SCOTT@PROD> update t_range set sal =4500 where empno=7369;
SCOTT@PROD> alter table t_range disable row movement;


3.2 list分区

通过离散的键值将数据存储在不同的分区,多用于按地域进行分区
create table stu_part (
stu_year varchar2(4),
stu_no varchar2(10),
stu_memo varchar2(2000)
)
partition  by list(stu_year)
(partition p_2012 values('2012'),
partition p_2013 values('2013'),
partition p_2014 values('2014'),
partition p_2015 values('2015'),
partition p_2016 values('2016'),
partition p_2017 values('2017','2018'),  --可以指定多个值
partition p_other values (DEFAULT)
);
INSERT INTO stu_part values('2017','jeames','学生会主席');
INSERT INTO stu_part values('2021','IT','课代表');

3.3 间隔分区


CREATE TABLE sales
( prod_id NUMBER(6)
, cust_id NUMBER
, time_id DATE
, channel_id CHAR(1)
, promo_id NUMBER(6)
, quantity_sold NUMBER(3)
, amount_sold NUMBER(10,2)
)
PARTITION BY RANGE (time_id)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION p2006 VALUES LESS THAN (TO_DATE('1-1-2007', 'DD-MM-YYYY')),
PARTITION p2007 VALUES LESS THAN (TO_DATE('1-1-2008', 'DD-MM-YYYY')),
PARTITION p2008 VALUES LESS THAN (TO_DATE('1-1-2009', 'DD-MM-YYYY')),
PARTITION p2009 VALUES LESS THAN (TO_DATE('1-1-2010', 'DD-MM-YYYY'))
);
insert into sales values(1,10086,sysdate,1,12,30,40);
##删除分区
ALTER TABLE T_RANGE DROP PARTITION P4 UPDATE  GLOBAL INDEXE
##重命名分区
alter table t_range rename partition SYS_P21 to  p_2014_02_01;


目录
相关文章
|
7月前
|
Kubernetes Oracle 关系型数据库
实时计算 Flink版产品使用合集之是否支持 Oracle 分区表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
SQL Oracle 关系型数据库
Oracle-使用切片删除的方式清理非分区表中的超巨数据
Oracle-使用切片删除的方式清理非分区表中的超巨数据
118 1
|
7月前
|
Oracle 关系型数据库 索引
Oracle-维护存在主键的分区表时的注意事项
Oracle-维护存在主键的分区表时的注意事项
171 0
|
7月前
|
SQL 存储 Oracle
Oracle-分区表解读
Oracle-分区表解读
223 0
|
消息中间件 Oracle 关系型数据库
Flink CDC确实支持Oracle分区表的CDC
Flink CDC确实支持Oracle分区表的CDC
244 1
|
消息中间件 Oracle 关系型数据库
Flink CDC确实支持Oracle分区表的CDC,但是在配置时需要特别注意。以下是一些可能的解决方案
Flink CDC确实支持Oracle分区表的CDC,但是在配置时需要特别注意。以下是一些可能的解决方案
151 1
|
SQL 存储 Oracle
Oracle-分区表解读(下)
Oracle-分区表解读(下)
85 0
|
SQL 存储 Oracle
Oracle-分区表解读(上)
Oracle-分区表解读
138 0
|
SQL 数据采集 Oracle
怎样使用oracle分区表
怎样使用oracle分区表
182 0