oracle分区表和分区索引的概念
Partitioning Key 分区键
就是决定分区的规则的一列或多列,oracle会自动完成insert、update和delete操作到合适的分区中。
Partitioned Tables
分区表可以包含100万独立分区。但是分区表不能有LONG or LONG RAW 类型的行,可以有CLOB or BLOB 类型的行。
建议使用分区的表:
- 大于2GB的表
- 历史数据表,更新最新数据到新的分区,查询其他分区的数据。数据写入读取分开。读写分离。
- 表的内容必须分布在不同存储设备上时
建议使用分区索引:
- 避免数据remove的时候重建整个索引
- 在不使整个索引无效的情况下,维护部分数据。
- 减少索引对具有单调递增值得列造成索引倾斜的影响
Partitioned Index-Organized Tables 分区索引组织表
索引组织表中,行存储在表的主键定义的索引中,因此索引就是数据,数据就是索引。
分区的好处:
提升数据库性能、可管理性和可用性。( improving performance, manageability, and availability)
Partitioning for Performance 分区的性能。 限制了查询和操作的数据量;为并行操作提供数据分布。分区特性包括:
– Partition Pruning 分区裁剪:是使用分区提高性能的最简单也是最重要的方法。分区修剪可以使用Oracle的所有性能特性
–Partition-Wise Joins :分区还可以使用分区连接技术提高多表连接的性能。分区连接可以应用于正在连接两个表并在联接键上对两个表进行分区的情况,或者当引用分区(reference partitioned)表与其父表连接时。分区连接将大连接分解为每个分区之间的小连接,从而在更短的时间内完成整个连接。这为串行和并行执行提供了显著的性能优势。Partitioning for Manageability 分区可管理性。分区使您能够将表和索引划分为更小的、更易于管理的单元。维护操作可以集中在表的特定部分。例如,您可以备份表的单个分区,而不是备份整个表。
Partitioning for Availability 分区可用性。分区数据库对象提供分区独立性。分区独立性的这一特性可以成为高可用性策略的重要组成部分。数据库管理员可以指定每个分区存储在一个单独的表空间中。
Partitioning Strategies 分区策略
Oracle分区提供了三种基本的数据分发方法作为基本的分区策略,用于控制如何将数据放置到各个分区中。
- Range
- Hash
- List
Range Partitioning
根据为每个分区建立的分区键的值的范围将数据映射到分区。它是最常见的分区类型,通常与日期一起使用。对于以date列作为分区键的表,1- 2010分区将包含分区键值为01-Jan-2010到31-Jan-2010的行。
Hash Partitioning
根据Oracle应用于标识的分区键的哈希算法将数据映射到分区。哈希算法在分区之间均匀地分布行,使分区的大小大致相同。
特别是当要分区的数据不是历史数据或没有明显的分区键时,Hash Partitioning是Range Partitioning的一种易于使用的替代方法。
List Partitioning
通过在每个分区的描述中为分区键指定一个离散值列表,列表分区使您能够显式地控制行如何映射到分区。
通过使用默认分区(default)能够避免为列表分区表指定所有可能的值,这样,所有不映射到任何其他分区的行都不会生成错误。
Composite Partitioning 复合分区 又包含许多小项:
- Composite Range-Range Partitioning:复合范围分区支持沿两个维度的逻辑范围分区;例如,按order_date进行分区,按shipping_date进行范围子分区。
- Composite Range-Hash Partitioning:使用范围方法对数据进行分区,并在每个分区内使用哈希方法对数据进行子分区。它提供了范围分区的可管理性以及哈希分区的数据放置、条带和并行性优势。
- Composite Range-List Partitioning:使用范围方法对数据进行分区,在每个分区内使用列表方法对数据进行子分区。它提供了范围分区的可管理性以及子分区的列表分区的显式控制。
- Composite List-Range Partitioning:支持给定列表分区策略中的逻辑范围子分区;例如,按country_id列出分区,按order_date列出范围子分区。
- Composite List-Hash Partitioning:支持列表-分区对象的哈希子分区;例如,要启用partition-wise joins。
- Composite List-List Partitioning:支持沿两个维度的逻辑列表分区;例如,按country_id进行列表分区,按sales_channel进行列表子分区。
Partitioning Extensions 分区扩展
除了基本的分区策略之外,Oracle数据库还提供了以下类型的分区扩展:
- Manageability Extensions
以下扩展极大地增强了分区表的可管理性:
–Interval Partitioning 间隔分区:指数据库在插入到表中的数据超过所有现有的范围分区时自动创建指定区间的分区。必须指定至少一个范围分区。范围分区键值决定了范围分区的高值,该值称为转换点(transition point),数据库为具有超过该转换点的值的数据创建区间分区。
请考虑以下限制:
1、您只能指定一个分区键列,它必须是数字或日期类型。
2、对于索引组织的表,不支持区间分区。
3、不能在分区间表上创建域索引(domain index)。
您可以创建单级间隔分区表和以下复合分区表:
Interval-range
Interval-hash
Interval-list
–Partition Advisor 分区顾问:是SQL Access顾问的一部分。它可以根据SQL缓存提供的SQL语句的工作负载、SQL调优集或用户定义的工作负载,为表推荐分区策略。
Partitioning Key Extensions 分区键扩展
下面的扩展扩展了定义分区键的灵活性:
Reference Partitioning :支持通过引用约束对彼此相关的两个表进行分区。分区键通过现有的父-子关系进行解析,并由启用和活动的主键和外键约束强制执行。
这种扩展的好处是,具有父子关系的表可以通过继承父表的分区键而不复制键列来实现逻辑上的均分。逻辑依赖关系还自动级联分区维护操作,从而使应用程序开发更容易,更不易出错。
所有基本的分区策略都可用于Reference Partitioning。Interval partitioning 不能与reference partitioning一起使用。Virtual Column-Based Partitioning:在以前的Oracle数据库版本中,只有在表中物理存在分区键的情况下,才能对表进行分区。虚拟列消除了这种限制,并允许使用表的一个或多个现有列由表达式定义分区键。表达式仅存储为元数据。
Oracle分区得到了增强,可以在虚拟列上定义分区策略。例如,10位的帐户ID可以包含帐户分支信息作为前三位。通过扩展基于虚拟列的分区,可以使用虚拟(派生)列ACCOUNT_BRANCH扩展包含ACCOUNT_ID列的ACCOUNTS表。ACCOUNT_BRANCH派生自ACCOUNT_ID列的前三位,该列成为该表的分区键。
Partitioned Indexes
就像分区表一样,分区索引提高了可管理性、可用性、性能和可伸缩性。它们既可以独立分区(全局索引),也可以自动链接到表的分区(本地索引)。通常,应该为OLTP应用程序使用全局索引,为数据仓库或决策支持系统(DSS)应用程序使用本地索引。此外,尽可能使用本地索引,因为它们更容易管理。
在决定使用哪种分区索引时,应该按照以下顺序考虑以下指导原则:
- 如果表分区列是索引键的子集,则使用本地索引。
- 如果索引是惟一的,并且不包含分区键列,则使用全局索引。
- 如果优先级是可管理性,那么使用本地索引。
- 如果应用程序是OLTP类型,用户需要快速响应时间,那么使用全局索引。如果应用程序是DSS类型,并且用户对吞吐量更感兴趣,那么使用本地索引。
分区索引的类型:
- Local Partitioned Indexes:本地分区索引比其他类型的分区索引更容易管理。它们还提供更大的可用性,在DSS环境中很常见。本地索引的每个分区都与表的一个分区相关联。该功能使Oracle能够自动保持索引分区与表分区同步,并使每个表索引对独立。使一个分区的数据无效或不可用的任何操作只影响一个分区。
不能显式地将分区添加到本地索引。相反,只有在向基础表中添加分区时,才会将新分区添加到本地索引中。同样,您不能显式地从本地索引删除分区。相反,只有在从基础表中删除分区时,才会删除本地索引分区。
本地索引可以是惟一的。但是,为了使本地索引惟一,表的分区键必须是索引键列的一部分。 - Global Partitioned Indexes:
–Global Range Partitioned Indexes:具有灵活性,因为该索引分区的分区方法和分区键完全独立于该表的分区方法。
–Global Hash Partitioned Indexes:通过在索引单调增长时分散争用来提高性能。 - 维护全局分区索引:
默认情况下,对堆组织表上的分区执行以下操作将所有全局索引标记为不可用:
ADD (HASH)
COALESCE (HASH)
DROP
EXCHANGE
MERGE
MOVE
SPLIT
TRUNCATE
可以通过将子句UPDATE indexes附加到操作的SQL语句中来维护这些索引。维护全局索引的两个优点是:
–索引在整个操作过程中保持可用性和在线状态。因此,没有其他应用程序受到此操作的影响。
–该索引不必在操作之后重新构建。
oracle分区表和分区索引的概念相关推荐
- 深入学习Oracle分区表及分区索引
关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: ? Range(范围)分区 ? Has ...
- java oracle 分区查询_深入学习Oracle分区表及分区索引
深入学习Oracle分区表及分区索引 关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: • Rang ...
- Oracle分区表及分区索引的创建
关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: • Range(范围)分区 • Has ...
- ORACLE分区表、分区索引详解
ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段存储,一般普通表格是一个段存储,而分区表会分成多个段,所以查找数据过程都是先定位根据查询条件定位分区范围,即数据在那个分区或那几个 ...
- oracle 分区表 字符串,ORACLE分区表、分区索引详解(转)
今天逛论坛发现了一篇好文章,分享一下,自己也备个份,方便查找!! ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段存储,一般普通表格是一个段存储,而分区表会分成多个段,所以查找数 ...
- oracle 分区表,分区索引
oracle 分区表,分区索引 1.分区表 一)范围分区 SCOTT@orcl#select tablespace_name from dba_tablespaces;TABLESPACE_NAME ...
- Oracle分区表及分区索引
Oracle分区索引 索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局分区 ...
- oracle 建分区索引_Oracle分区表及分区索引-创建list分区
Oracle 分区表及分区索引 - 创建 list 分区 创建 list 分区的语法如上,需要我们指定的 : l column: 分区依赖列 ( 注意:只能是一个 ); l partition: 分区 ...
- oracle不适合建立索引的场景,Oracle 分区表中本地索引和全局索引的适用场景
背景 分区表创建好了之后,如果需要最大化分区表的性能就需要结合索引的使用,分区表有两种索引:本地索引和全局索引.既然存在着两种的索引类型,相信存在即合理.既然存在就会有存在的原因,也就是在特定的场景中 ...
- oracle自动分区如何创建本地索引吗,创建与管理Oracle分区表和本地索引的实例解析...
创建与管理Oracle分区表和本地索引的相关知识是本文我们主要要介绍的内容,我们知道,Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用.从产品上说,分区技术是Oracle企业 ...
最新文章
- vue 2个方法先后执行_演讲你早该知道的2个演讲方法
- Codeforces 486D. Valid Sets
- java 爬虫 百度新闻_基于HttpClient实现网络爬虫~以百度新闻为例
- RabbitMq初探——安装
- Linux sed工具用法
- 回调破前高意味着什么_4连阳后是回调还是突破呢?
- 服务监控 Spring Boot Actuator 介绍
- 一汽奔腾b7o价位_全新第三代奔腾B70有何资格对合资品牌降维打击?
- java中什么泛型_Java中的泛型
- 统计bytearray中的bitcount
- 煤矿行业设备管理系统
- Adobe Reader X 10.1.0
- Error: could not open `C:\Program Files\Java\jre6\lib\amd64\jvm.cfg' 解决办法
- 笔记本电脑桌面计算机图标不见了怎么办,桌面图标不见了怎么办,教您电脑桌面图标不见了怎么办...
- 夏普SHARP AR-2818 一体机驱动
- fastdb学习记录#1 table、宏、query、cursor
- 最完整的Android 安卓开发体系了解一下
- word中怎样在方框里打钩?
- 字符串类型的数字的加减乘除运算
- Oracle中设置定时任务--执行sql
热门文章
- 计算机主板自动重启,我电脑关机后总是自动重启,主板换了
- 计算机关机后,电脑关机后自动重启怎么解决?
- mysql数据库管理-sql_mode参数(严格和非严格模式)
- Visio中添加、移动或删除形状上的连接点的方法
- php试卷分析,试卷分析常用统计指标
- 在 vmware ESXi上安装mac系统虚拟机
- proposal中文翻译_PROPOSAL 是什么意思_ PROPOSAL 的翻译_音标_读音_用法_例句_爱词霸在线词典...
- oracle数据库中的回收站,Oracle回收站的清理方法
- 【2013年总结】思维跌宕起伏,生命颠簸曲折的一年
- wincc逻辑运算符_wincc逻辑运算符_wincc中表达式及公式