Oracle12C列表分区Auto-List Partitioning

1、定义
Oracle可以将大表或索引分成若干更小、更方便管理的部分,每一部分成为一个分区,这样的表称为分区表。在逻辑上,表仍然是一张完整的表,只是将表中的数据在物理上可能存放到多个表空间或物理文件上。在查询数据时,不至于每次都扫描整张表。

2、不能分区的情况
(1)簇表不能进行分区;
(2)不能分割含有LONG或LONG RAW列的表(LONG、LONG RAW存储大文件对象);
(3)索引组织表不能进行范围分区

3、何时考虑分区?
对大表进行分区,将有益于大表操作的性能和大表的数据的维护。官方文档通常当表的大小超过2GB,或对于OLTP系统,当表的记录超过1000万时,都应考虑对表进行分区。

4、分区优点
(1)增强可用性。如果表的一个分区由于系统故障而不能使用,那么表的其余好的分区仍然可以使用。
(2)减少关闭时间。如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,可能比整个大表修复花的时间更少。
(3)维护轻松。单独管理每个分区比管理单个大表要轻松得多。
(4)均衡I/O。可以把表的不同分区分配到不同的磁盘来平衡I/O,改善性能。
(5)改善性能。对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可以使运行的速度更快。
(6)分区对于用户透明,最终用户感觉不到分区的存在。

5、Oracle12C列表分区Auto-List Partitioning
在Oracle Database 12.2之前,如果使用列表分区,当插入的数据超过了分区列表值设定,则会抛出异常;而如果存在大量的列表值需要定义,则可能需要一一设置。
在12.2引入的新特性中-Auto-List Partitioning可以针对新的列表值,进行自动的分区创建,从而减少了维护的复杂性。
1 对于新创建的表,可直接创建为AUTO LIST 的分区表即可,需在建表脚本中添加如下建表子句:

tablespace TBS_MAK
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
next 1M
minextents 1
maxextents unlimited
)partition by list (RPT_END_DT) automatic
(
partition P_1 values  ('1')
tablespace TBS_MAK
pctfree 10
initrans 1
maxtrans 255)row store compress advanced;

2 对于已经存在的非分区表,可通过12C的新语法,在线修改为AUTO LIST 分区表,语法如下:

alter table  M_FM_GL_BIZ_STATUS_OLD modify partition by list (RPT_END_DT) automatic
(
partition P_1 values  ('1')
tablespace TBS_MAK
pctfree 10
initrans 1
maxtrans 255)row store compress advanced online ;

分区信息查询

--1、如果表里的TABLESPACE_NAME为空,代表是分区表
SELECT A.TABLESPACE_NAME, A.*
FROM USER_TABLES A
WHERE TABLE_NAME = 'M_LN_BB_LOAN_DTL_INFO_D';
--2、分区信息查询
SELECT *
FROM USER_TAB_PARTITIONS
WHERE TABLE_NAME = 'M_LN_BB_LOAN_DTL_INFO_D'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值