分区对象(Partitioned Object)


分区技术可以将数据库对象(数据表)数据按照规则进行划分,把不同的数据放到不同的分区中,分区对应用透明。

对于非分区表,只能存在于一个表空间中。但是,分区表可以存在于不同的表空间中。

在分区表内部是通过多个分区组成的,每个分区都会有自己的约束条件,并且一个分区只能存在于一个表空间中。

因此,也可以说是分区表中的不同分区可以存在于不同的表空间内。

分区对象的优点:


1. 数据加载与更新索引更加快捷;

2. 删除部分数据速度更快;

3. 全表扫描与索引查询更快;

4. 减少了数据损坏的可能性;

分区键(Partition Key)


分区键是划分数据表的一个基准。一般选择一列作为分区键(Partition Key Columns)。

分区列数据类型必须选择可以进行比较验算的类型(<,>,=)。

BINARY,GEOMETRY,BLOB,CLOB类型是不可以选做分区列的。

分区表(Partition Table)


分区表的概念类似于联合视图(Union View),但是它有以下两个优点:

1、数据可变更:分区表可以直接对数据进行操作,但是无法通过联合视图对数据进行操作。

2、创建索引:分区表可以创建索引,但是联合视图不可以。

分区表分为磁盘分区表与内存分区表两种类型。

分区索引(Partition Index)


针对于分区表使用的索引,可以分为两个类型:

1、分区索引与非分区索引:

分区索引按照分区条件以及与分区键有关的前缀索引(Prefixed Index)与非前缀索引(Non-prefixed Index)。

前缀索引:前缀索引中索引键的第一列与分区键的第一列一致;

非前缀索引:非前缀索引中索引键的第一列与分区键的第一列不一致;

区分方法:如果对一个分区表创建了一个分区索引。那么,分区键所在的列与分区索引指定的列如果一致,

那么,这样的索引叫做前缀索引;如果不一致,那么,这样的索引叫做非前缀索引。

目的:区分前缀与非前缀的目的,在于分区键所在的列具有唯一性(Unique)。

因此,针对前缀索引进行唯一性检查时,由于分区键的唯一特性,可以不需要对全部的分区进行检查。

但是,针对非前缀索引进行唯一性检查时,由于不是分区键所在列,需要对所有的分区进行唯一性检查。

2、分区索引:

分区索引按照类型分为全局分区索引(Global Index)与局部分区索引(Local Index)两种。

全局分区索引:索引分区键与表的分区键不一致时,这样的索引称之为全局分区索引。

局部分区索引:索引分区键与表的分区键一致时,这样的索引称之为局部分区索引。

区分方法:对一个分区表创建了一个分区索引。如果索引指定列与分区键所在列一致,创建局部分区索引;

如果索引指定列与分区键所在列不一致,创建全局分区索引。

目的:区分全局分区与局部分区索引,全局分区索引在分区表或数据发生变化时,意味着需要进行重建工作。

例如,(ALTER TABLE、MERGE等)。但是局部分区索引就不受影响。

分区条件(Partition Condition)


分区条件指的就是如何对数据进行划分的准则。

例如,对于一个分区表,按照条件划分了三个分区。

第一个分区条件为:Partition_condition1;

第二个分区条件为:Partition_condition2;

第三个分区条件为:默认条件;

分区方式(Partition Method)


分区表分区方式分为三种:区间(Range)、列表(List)、哈希(Hash)。

区间分区方式(Range Partitioning Method)


使用此种分区方式时,大多数情况下按照日期进行分区操作(DATE)。

此方式结合LESS THAN关键词,对日期进行划分。使用DEFAULT表示默认的分区区间。

CREATE TABLE part_table
(
sales_date DATE,
sales_id NUMBER,
sales_city VARCHAR(20)
)
PARTITION BY RANGE(sales_date)
(
PARTITION part_1 VALUES LESS THAN ( TO_DATE(‘01-FEB-2006’) ),
PARTITION part_2 VALUES LESS THAN ( TO_DATE(‘01-MAR-2006’) ),
PARTITION part_3 VALUES LESS THAN ( TO_DATE(‘01-APR-2006’) ),
PARTITION part_def VALUES DEFAULT
) ;

多列区间分区(Multicolumn Partitioning Method)

多列区间分区指的是使用多个数据列进行区间划分对数据进行分区的方式。

CREATE TABLE part_table
(
sales_date DATE,
sales_id NUMBER,
sales_city VARCHAR(20),
....
)
PARTITION BY RANGE(sales_date, sales_id)
(
PARTITION part_1 VALUES LESS THAN ( TO_DATE(‘01-FEB-2006’), 200),
PARTITION part_2 VALUES LESS THAN ( TO_DATE(‘01-MAR-2006’), 100),
PARTITION part_3 VALUES LESS THAN ( TO_DATE(‘02-MAR-2006’)),
PARTITION part_4 VALUES LESS THAN ( TO_DATE(‘01-APR-2006’) ),
PARTITION part_def VALUES DEFAULT
) ;

区间分区操作(Range Partitioning Method)

1、分割分区

1)in-place 分割:新生成一个分区,将原有分区的数据移动到新分区中;

2)out-place 分割:新生成两个分区,将原有分区的数据分别移动到两个分区中;

2、删除分区:删除指定的分区,包括分区中的数据以及相关数据字典内容;

3、合并分区:

1)in-place Merge:不生成新分区,将一个分区数据合并到另一个分区中;

2)out-place Merge:生成新分区,将两个分区数据合并到新分区后,删除这两个分区;

4、重命名分区

5、删除分区数据

列表分区方式(List Partitioning Method)


使用此种分区方式时,按照分区键适用的集合为基准进行划分的。

例如,按照月份、地域等。

CREATE TABLE part_table
(
sales_date DATE,
sales_id NUMBER,
sales_city VARCHAR(20),
....
)
PARTITION BY LIST(sales_city)
(
PARTITION part_1 VALUES ( ‘BEIJING’ , ‘TIANJIN’ ),
PARTITION part_2 VALUES ( ‘SHANDONG’ , ‘ANHUI’ ),
PARTITION part_3 VALUES ( ‘CHENGDU’ , ‘WUHAN’ ),
PARTITION part_def VALUES DEFAULT
);

列表分区操作(List Partitioning Method)

1、分割分区

1)in-place 分割:新生成一个分区,将原有分区的数据移动到新分区中;

使用ALTER分割分区表时,不明确指定表空间情况下,使用的是in-place方式。

2)out-place分割:新生成两个分区,将原有分区的数据分别移动到两个分区中;

使用ALTER分割分区表时,明确指定表空间情况下,使用的是out-place方式。

2、删除分区:删除指定的分区,包括分区中的数据以及相关数据字典内容;

3、合并分区:

1)in-place Merge:不生成新分区,将一个分区数据合并到另一个分区中;

在使用ALTER语句中,不明确指定表空间的情况下,使用in-place方式;

2)out-place Merge:生成新分区,将两个分区数据合并到新分区后,删除这两个分区;

在使用ALTER语句中,明确指定表空间的情况下,使用out-place方式;

4、重命名分区

5、删除分区数据

哈希分区方式(Hash Partitioning Method)


使用此种分区方式时,使用分区键计算得出HASH值为基准进行划分的。

分区键可以指定多列

阿萨德

阿萨德

转载于:https://www.cnblogs.com/randyma/p/7449282.html

分区表(Partitioned object)相关推荐

  1. hive 建表,分桶表(clustered by)、分桶且桶内排序(clustered by+sorted by)、分区表(partitioned by)、分区分桶一起用

    一.分桶表 1.建表语句 create table test_bucket_sorted ( id int comment 'ID', name string comment '名字' ) comme ...

  2. oracle move不能操作分区,关于Oracle分区表的move操作

    关于分区表的move操作还是很值得深究的一个问题.如果分区表中含有lob字段,难度还会加大. 对于普通的表而言,做move操作室理所 关于分区表的move操作还是很值得深究的一个问题.如果分区表中含有 ...

  3. oracle move不能操作分区,Oracle分区表的move操作

    对于普通的表而言,做move操作室理所当然,oracle提供的方式很直接快捷.当然了这个命令也不是高可用的范畴.但是对于数据重组还是很方便快捷的. 一般来说,如果尝试对分区表进行move操作,会得到如 ...

  4. sql server表分区_SQL Server中的FORCESCAN和分区表

    sql server表分区 I would like to share one curios case that I recently came across. 我想分享一下我最近遇到的一个古玩案例. ...

  5. SQL Server 2005 术语词汇表

    术语 定义 ActiveX 数据对象 (ActiveX Data Objects) 一种易于使用的应用程序编程接口 (API),用于封装 OLE DB 以在诸如 Visual Basic.Visual ...

  6. 高性能mysql知识总结大全

    高性能mysql知识总结大全 vii 目录 Contents 推荐序- I 前言- III 第 1 章 MySQL 架构- 1 1.1 MySQL 的逻辑架构 - 1 1.2 并发控制 - 3 1.3 ...

  7. oracle system和sysaux表空间清理和回收

    oracle system和sysaux表空间清理和回收   前几天和一个网友讨论了下SYSAUX表空间使用率过高的问题,今天有时间整理一下,正好我们的测试数据库也存在这个问题.本案例数据库版本为11 ...

  8. sql 预先_预先联合查询

    sql 预先 介绍 (Introduction) According to The Presto Foundation, Presto (aka PrestoDB), not to be confus ...

  9. Oracle 分析及动态采样

    之前在说Oracle Optimizer中的CBO时讲到,当表没有做分析的时候,Oracle 会使用动态采样来收集统计信息. 获取准确的段对象(表,表分区,索引等)的分析数据,是CBO存在的基石,CB ...

最新文章

  1. 基于OpenLayers+rbush实现高德轨迹样式
  2. TCGA的样本命名规则
  3. 有向图强连通分量tarjan算法
  4. 整理一周的Python全品类资料包含100本电子书,还有独家实战项目源码公开!
  5. Windows Azure Storage论文解读
  6. swap(a,b)值交换的4种方法
  7. 并发编程总结一,进程
  8. 【JVM】第1篇:JVM内存模型
  9. IDEA格式化HTML页面
  10. 2020年低压电工考试试卷及低压电工复审考试
  11. 二十一、常见股票和量化投资策略
  12. Android获内外网IP地址工具类(Json解析读取)
  13. unity 报错 Some objects were not cleaned up when closing the scene. 原因与方案
  14. Linux系统下如何显示隐藏文件
  15. 语句SELECT TOP 100 PERCENT在不同数据库中的区别
  16. FC炸弹人 java源码下载
  17. 使用 pdf.js 查看发票时,显示不了台头和印章的解决办法
  18. Sorting a Three-Valued Sequence 三值的排序
  19. JAVA EXAMPLE
  20. Quick #UE4 Tip (第3周 2020.4.10)

热门文章

  1. jenkins 读取json文件_使用插件轻松获取jenkins构建数据
  2. js全局变量和局部变量名称一样_微信小程序的全局变量、页面变量,你真的掌握了?...
  3. matlab 安装(2018a图解版)
  4. list在c语言中的作用,在C语言中大略实现VC++中的LISTARRAY功能方法(一)
  5. 跨专业留学学计算机硕士,跨专业申请中国香港计算机硕士需要注意哪些?
  6. oracle只有oradata恢复,如何恢复一个只有完好数据文件的数据库?
  7. java里面数字四舍五入,Java数字的四舍五入
  8. mysql第四步安装失败_MySQL8.0版本的安装以及解决安装后MySQL服务无法启动的问题...
  9. SpringSecurity Filter顺序
  10. 08 内存分配和程序内存布局