1.什么是分区

分区的实质是把一张大表的数据按照某种规则使用多张子表来存储。然后这多张子表使用统一的表名对外提供服务,子表实际对用户不可见。类似于在多张子表上建立一个视图,然后用户直接使用该视图来访问数据。

2.为什么要使用分区

当一张表的数据量到达上亿行的时候,表的性能会严重降低,这个时候就需要用到分区了,通过划分成多个小表,并在每个小表上建立本地索引可以大大缩小索引数据文件的大小,从而更快的定位到目标数据来提升访问性能。
分区除了可以用来提升访问性能外,还因为可以指定分区所使用的表空间,因此也用来做数据的生命周期管理。当前需要频繁使用的活跃数据可以放到访问速度更快但价格也更贵的存储设备上,而2、3年前的历史数据,或者叫冷数据可以放到更廉价、速度更低的设备上。从而降低存储费用。

3.简单分区

常用的分区方法有RANGE、HASH、LIST 3 种。
range分区通常用来对时间或数字进行分区,list分区用来把不相关的数据组织到一起,hash让数据均匀的分布到各个分区中。另外为了方便对范围分区进行管理,oracle还提供了range分区的增强类型interval(间隔)分区,当有新写入的数据的分区值超过了当前分区范围的最大值的时候,它会以分区范围的当前最大值为基数,以指定的interval 为区间,自动创建一个新分区,具体使用案例见下文。
da9d3f91844f316f83f54b9189620357.png             范围分区语法图


5a92da6da253b5b7da50336b7bb0868a.png             列表分区语法图


c44554dcb5ed819079de124c9d71039e.png

individual_hash_partitions::=
6332f9289cb791f1d263898d8a0bbcab.pnghash_partitions_by_quantity::=
ab0b51282edca9c2c98175eb96928874.png

案例:

想想这样一种情况:假设我们需要对某张表按月为单位进行分区,也许我们可以提前建好近1年的分区,但是1年的时间一过,我们就需要再添加分区了,如果没有每天定时查看分区数是否足够的话,那么就会因为分区不存在而报错,如果使用间隔分区表的话,dbms会根据分区字段的值自动添加分区。
如下例,建表的时候指定了5个分区,且分区间隔为1年,目前库里面最大的分区p2020的边界是少于2021-01-01日(范围分区的指定范围为左闭右开,即边界不包括values less than指定的值)

create table RANGE_INTERVAL(id int, name varchar2(500), update_time date)
partition by range(update_time)
interval (numtoyminterval(1,'year') )
(partition p2016 values less than (to_date('2017-01-01','yyyy-mm-dd')) compress for oltp tablespace che_data pctfree 5,
partition p2017 values less than (to_date('2018-01-01','yyyy-mm-dd')) compress for oltp pctfree 5,
partition p2018 values less than (to_date('2019-01-01','yyyy-mm-dd')) compress for oltp pctfree 5,
partition p2019 values less than (to_date('2020-01-01','yyyy-mm-dd')) compress for oltp pctfree 5,
partition p2020 values less than (to_date('2021-01-01','yyyy-mm-dd')) compress for oltp
);

表建好之后,我们看一下dbms的元数据,一个5个分区,且都不是间隔分区
e5db853f59042f7898659d013262e43e.png

 insert into RANGE_INTERVAL
select 1, 'xixi' name , sysdate + interval '1' year from dual;

插入数据后,再次查看dbms的元数据
140cb539128ec14b49550b36ba1136a6.png 可以看到多了一个分区。


4.二级分区

二级分区是可以在分区里再次根据指定的字段划分子分区,range、hash、list这三种分区类型可以两两组合形成二级分区,也可以和自己组合形成二级分区。

混合范围分区::=
37c3efccd9e2d5463883ef6961b47950.png


混合列表分区::=
58a082923641fb21ae1bb1ad9fc0a2f7.png


混合hash分区::=
58188dacd7c7dbfc3e317114e1b0b3a6.png

子分区语法图

范围子分区语法图
ceb27e35290c8ed9459c63ee2aff178b.png


列表子分区语法图
9f87acd68c8111964813a457a95b7aea.png


hash子分区语法图
eeaa44251d2ca70d6cd85b1cdf85b90a.png

4.1hash-hash二级分区使用示例

create table PPU_CELLPHONE_BAK partition by hash (data_source_id)  subpartition by hash(ENCRYPT_ID )
subpartitions 5 partitions 6

oracle分区怎么使用的更多相关文章

  1. ORACLE 分区

    在建设数据仓库过程中,经常会有大量数据,短时间内表中数据量有限,查询性能还可以,但随着时间的延长,表中数据量迅速增加,查询速度就会变慢,性能下降,这时就要考虑对表进行分区. 一.oracle的分区 当 ...

  2. oracle 分区和分区索引

    一.个人理解:建表时一般都会指定在一个表空间上,但是可能随着表空间扩大,查询越来越慢,分区表就是将一个表实际存在不同的表空间,oracle存储分为块,断,表空间.新建一个表,会给表分配指定大小的段,段 ...

  3. Oracle体系结构之Oracle分区

    目录 Oracle分区 0 一.Oracle分区理论知识 1 二.分区表的实现方式 1 1.范围分区(range partition table) 1 2.列表分区(list partitioning ...

  4. 01 Oracle分区索引

    Oracle分区索引   索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局 ...

  5. Oracle分区索引

    索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局分区索引) 下面就来详细解 ...

  6. Oracle分区

    可以参考文档:http://docs.oracle.com/cd/E18283_01/server.112/e16541/part_admin001.htm#insertedID0 (支持11g和12 ...

  7. ORACLE分区--表分区

    .love_flying_snow Oracle表分区 Oracle . 废话少说,直接讲分区语法. Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区. 一:范围分区 就是根据数据库 ...

  8. oracle分区提高篇

      一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Or ...

  9. 柯南君 :Oracle 分区技术 之 怎样支撑大数据操作?

    前段时间.看了罗女士( 资深技术顾问 - Oracle 中国 顾问咨询部)关于<大批量数据处理技术的演讲>视频.感觉受益良多,结合多年的知识积累,柯南君给大家分享一下: 交流内容: 一.O ...

  10. [Oracle]分区索引

    上一节学习了分区表,接着学习分区索引. (一)什么时候对索引进行分区 · 为了避免移动数据时重建整个索引,可对索引分区,在重建索引时,只需重建与数据分区相关的索引: · 在对分区表进行维护时,为了避免 ...

随机推荐

  1. matlab使用libsvm入门教程——使用matlab安装配置libsvm以及一个svm分类实例

    前言 此教程专注于刚入门的小白, 且博客拥有时效性, 发布于2019年3月份, 可能后面的读者会发现一些问题, 欢迎底下评论出现的问题,我将尽可能更新解决方案. 我开始也在如何安装libsvm上出现了 ...

  2. LeetCode198 House Robber(打家劫舍)

    题目 You are a professional robber planning to rob houses along a street. Each house has a certain amo ...

  3. Linux内核之 进程管理

    正如上一篇我们提到过,进程是Linux系统中仅次于文件的基本抽象概念.正在运行的进程不仅仅是二进制代码,而是数据.资源.状态和虚拟的计算机组成.我们今天主要介绍进程的概念,组成,运行状态和生命周期等. ...

  4. 阙乃祯:网龙在教育领域Cassandra的使用

    网龙是一家游戏公司,以前是做网络在线游戏的,现在开始慢慢转型,开始从事在线教育. 在线教育已经做了5-6年时间了.为什么我们会用Cassandra呢?那我们就来介绍今天的议题. 首先介绍我们的业务背景 ...

  5. Spark优化之小文件是否需要合并?

    我们知道,大部分Spark计算都是在内存中完成的,所以Spark的瓶颈一般来自于集群(standalone, yarn, mesos, k8s)的资源紧张,CPU,网络带宽,内存.Spark的性能,想 ...

  6. three.js 着色器材质内置变量

    这篇郭先生说一下three.js着色器的内置变量,分别是 gl_PointSize:在点渲染模式中,控制方形点区域渲染像素大小(注意这里是像素大小,而不是three.js单位,因此在移动相机是,所看到 ...

  7. C++统计单词数

    [题目描述] 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在 ...

  8. GRMS_README

    基于Hadoop的商品推荐系统 基于特征:基于行为:具有了一定的历史特征. 基于用户: 基于商品: 推荐结果=用户的购买向量*物品的相似度矩阵 物品的相似度:物品的共现次数 1.项目名:GRMS2.添 ...

  9. Debian 镜像使用帮助

    链接: Debian 镜像使用帮助 buster: # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua ...

  10. Java 8新特性(三):Optional类

    在上一篇介绍Stream流式数据处理的文章中提到了Optional类,这是Java 8新增的一个类,用以解决程序中常见的NullPointerException异常问题.本篇文章将详细介绍Option ...