当前位置: 首页 > news >正文

Oracle分区技术特性

Oracle 的分区是一种“分而治之”的技术,通过将大表、索引分成可以独立管理的、小的 Segment,从而避免了对每个对象作为一个大的、单独的 Segment 进行管理,为海量数据访问提供了可伸缩的性能。自从 Oracle 引入分区技术以来,Oracle 公司在每次推出重要版本时都会对分区方法或功能上有所增强。从后面的分区方法中我们也可以清晰的看到 Oracle 分区技术的发展、成长历程。Oracle 公司一直在致力于不断完善分区技术,确保满足所有的业务需求。

版本

新支持的分区方法

说明

7.3.x

逻辑分区/分区视图

◊在Oracle  8版本前,DBAs和Consultants  根据系统需要实现了"Home-Grown"(自产的/土生土长的)分区方法,他们借助UNION-ALL  Views或Partition  Views(7.3开始提供的分区视图,需要配合初始化参数PARTITION_VIEW_ENABLED=TRUE来使用Optimizer  Prunes特性)实现,即使到今天,如果不采购Oracle  Database Enterprise Edition下的Partitioning  Option License,从许可上来讲,也必须借助这种Home-Grown的方法来实现。
 ◊这种方法对DML是不透明的

◊Partition  Views in 7.3: Examples and Tests (文档 ID 43194.1)

8.0.x

Oracle  8.5 开始支持分区表/索引,

首先提供范围分区(range)

1)使Oracle成为了第一个支持物理分区的RDBMS供应商
 2)Oracle  8 仅支持表和索引级的分区(  Clustered tables/indexes and snapshots are not supported)
 3)Oracle  8中不可以update  partition key columns,否则会遇到ORA-14402错误
 4)只实现了静态的分区裁剪功能

5)支持索引的Local  and global Range

8i

新增加希分区(hash)

开始支持范围-哈希复合分区(range-hash)

8.1.7实现了动态智能裁剪(Dynamic  partition pruning)和智能连接(Partition-wise  joins)

9iR1

新增列表分区(list)

开始支持全局索引维护

1)在9i(9.0.1)之前, IOT表只支持range分区,实际上是从8.1.5版本开始支持对IOT的range分区
 2)从9i开始支持对IOT的range、hash分区
 3)在9iR2  hash分区支持IOT表中包含lob列(9i中暂不支持包含lob类型的IOT  hash 分区)

4)支持Global  index maintenance

9iR2

开始支持范围-列表复合分区(range-list)

1)Fast Split
 2)DEFAULT  Partition for LIST

10gR1

1)增加了对索引组织表(IOT)  列表(list)分区功能
 2)增加了对全局分区索引的hash分区策略
 3)10gR2开始一个表可以支持1024K-1个分区(以前是64K-1)

1)扩展了global  indexes on partitioned IOTs的维护支持
 2)Local  partitioned bitmap indexes on partitioned IOTs
 3)LOB  columns are now supported in all types of partitioned IOTs.

4)fast  split partition支持分区IOT表

10gR2

11g

Interval  Partitioning

实现了范围分区的自动化

System  Partitioning(系统分区)

在这个新的类型中,我们不需要指定任何分区键,数据会进入哪个分区完全由应用程序决定,实际上也就是由SQL来决定,终于我们在Insert语句中可以指定插入哪个分区了

More  Composite Partitioning (更多的复合分区)

在9i、10g中,复合分区只支持Range-List和Range-Hash
 在11gR1中复合分区的类型大大增加,现在Range,List,Interval都可以作为Top level分区,而Second level则可以是Range,List,Hash,也就是在11gR1中可以有3*3=9种复合分区,可以满足更多的业务需要.
 在11gR2中,又增加了hash-hash复合分区

Reference  Partitioning(外键也叫引用分区)

分区方案的引入是以相关表格通过相同的分区策略获得好处作为前提设想的。Detail表格通过PK-FK关系从master表格继承相同的分区方案.我们不需要把分区键存储在detail表格中,通过关键词“PARTITION BY REFERENCE,detail表格获得master表格的分区方案

虚拟列分区(Virtual Column-Based  Partitioning)

在11g之前,只有分区键存在于表格中才可以实现对表格的分区功能。而Oracle  11g的新功能“虚拟列”打破了这一限制,允许通过使用表格中的一列或多列的计算式作为分区键。

分区建议器

SQL  Access Advisor 不但可以为索引、物化视图和物化视图日志提供建议,还可以生成分区建议。执行  SQL Access Advisor 生成的建议,您将会看到预期的性能收益。可以手动实施生成的脚本,也可以将其提交给  Oracle Enterprise Manager 中的一个队列。借助分区建议扩展,客户不仅可以获得专门针对分区的建议,还可以获得  SQL Access Advisor 的更全面的整体建议,从而在总体上提高  SQL 语句的整体性能。

Partition  Advisor 已集成到  SQL Access Advisor 中,是  Oracle Tuning Pack(一个额外的许可选件)的组成部分。

12cR1

Online  Partition 维护

1)在线移动、压缩分区或子分区,不阻赛DML操作

      alter table sales move partition p1  tablespace lowtbs update indexes online;

      alter table sales move partition p1 ROW STORE COMPRESS BASIC update  indexes online;
      alter table sales move  partition p1 ROW STORE COMPRESS ADVANCED  update indexes online;
      alter table sales move  partition p1 COLUMN STORE COMPRESS FOR  QUERY LOW update indexes online;
      alter table sales move  partition p1 COLUMN STORE COMPRESS FOR  QUERY HIGH update indexes online;
      alter table sales move  partition p1 COLUMN STORE COMPRESS FOR  ARCHIVE LOW update indexes online;
      alter table sales move  partition p1 COLUMN STORE COMPRESS FOR  ARCHIVE HIGH update indexes online;

      select table_name,compression,compress_for  from dba_tables;
      select table_name,partition_name, compression,compress_for  from dba_tab_partitions;

      参见示例

2)Restrictions on the ONLINE Clause  --详见官方文档里的说明
    (1)不支持sys用户下表
    (2)不支持索引组织表(IOT)
    (3)不支持包含对象类型或bitmap  join indexes以及domain  indexes的表
    (4)当打开database-level  supplemental logging 时不支持online维护
    (5)Parallel  DML and direct path INSERT operations require an  exclusive lock on the table. 所以,  these operations are not supported concurrently with an ongoing online  partition MOVE, due to conflicting locks.

Reference  Partitioning的增强

1)支持Interval-Reference分区
 2)提供truncate  partition、exchange  [SUB]partition操作的CASCADE级联选项

多分区维护操作

add/truncate/drop/split/merge分区操作允许在一个操作中一次操作多个分区

部分索引

Local和Global indexes可以在部分分区上创建,这个特性(Partial  Indexing on Partitioned Tables)是通过表表上的indexing属性来控制的。注意,部分索引不能创建全局唯一索引。

全局索引异步维护

1)对于Drop和Truncate  Parition 操作,支持异步维护全局索引,Update  Indexes字句仅仅维护metadata,真正的索引维护是通过一个JOB(SYS.PMO_DEFERRED_GIDX_MAINT_JOB)异步完成的。缺省情况下该job是每天凌晨2:00执行,也可手工调用dbms_part.cleanup_gidx来完成

      PROCEDURE CLEANUP_GIDX                  - To clean up the global indexes 
      PROCEDURE CLEANUP_GIDX_INTERNAL  - To clean up the internal tables
      PROCEDURE CLEANUP_ONLINE_OP        - To clean up the online partition movements

2)DBA_INDEXES  和DBA_IND_PARTITIONS新增加了ORPHANED_ENTRIES列。该列用来指出whether  or not a global index (partition) contains stale entries due to deferred  index maintenance during DROP/TRUNCATE PARTITION, or MODIFY PARTITION  operations. 有三种取值:
 YES: The index (partition) contains  orphaned entries
  NO: The index (partition) does  not contain any orphaned entries
 N/A: The property is not applicable –  this is the case for local indexes, or indexes on non-partitioned tables.

12cR2

Multi-Column  List Partition

1)12.2.0.1.0开始支持,最大16个列

2)支持分区和子分区

3)支持heap  tables、external  tables

4)支持Reference  Partitioning and Auto-List

Auto-List  Partitioning

1)实现了list分区的自动化管理,类似11g版本开始支持的Interval  Partitioning

2)没有default分区,必须至少指定一个分区

3)系统自动增加的分区会自动命名

4)list分区到Auto-List可以转换,前提是List分区表定义上没有DEFAULT分区

Interval  Subpartioning

1)  从11g版本中开始支持的Interval  Partitioning技术不支持子分区,从12cR2版本开始支持。

2)  Interval Subpartioning和Interval  Partitioning的使用条件及要求是一样的,如:

     --没有MAXVALUE

     --没有Add  Partition

3)  Interval-subpartitoning strategy set at table level
     --Subpartiton template mandatory
     --Interval identical for all partitions

4)  每个表最大100万个[sub]partitions

     --From one partition with one million subpartitions ..
     --..To one million partitions with one subpartition each

Partitioned  External Tables

Partitioned  external tables will provide both the functionality to map partitioned Hive  tables into the Oracle ecosystem as well as providing declarative  partitioning on top of any Hadoop Distributed File System (HDFS) based data  store.

分区与Sharding

–数据垂直分区到多个独立的数据库中
 –线性扩展
 –自动部署
 –支持HASH、RANGE、LIST和复合方式的自动数据分区
 –自动Rebalance和Resharding

分区表相关维护维护方面的增强

Online分区维护(DDL)的

11g

Create  index
 Add column
 Add constraint

12cR1

Drop  index
 Drop Constraint
 Alter table set unused column
 Alter table move partition

12cR2

Alter  table modify non-partitioned table to partitioned table 
 Alter table move online for heap tables

Alter  table split partition online

Filtered分区维护操作

该特性允许我们在维护(Move/merge/split)分区表的时候进行数据过滤

alter table orders_move_part 
 move partition Q1_2015 tablespace tbs_archive compress
 INCLUDE ROWS where order_state='open';

快速创建分区交换中间表

Oracle  Database 12c 第 2 版中的FOR EXCHANGE WITH子句消除了分区交换的检测性工作,Indexes  are not created as part of this command. eg:

create table  sales_exch for exchange with sales;

只读分区

分区/子分区可以被设置为read  only或read  write(default)。

注意:只读分区不允许drop,但对应的base  table是可以被drop的,所以不要寄望于这个做更加级别的安全保护,还是要配合权限和其他安全措施来保护。

tips:这样从12cR2/18c开始,可以做到Service->Oracle_Home->Instance-->PDB->Tablespace  ->Table/MV/外部表->Partition->subpartition等各个级别的只读设置,配合对象只读权限(read)、系统只读权限(read  any table)及Schema  Only Accounts等特性,可以满足各个层次的数据保护需求。

18c

18.1.0

Enhanced  Parallel Partition-wise Operations

参见这里

·         Partition-Wise  Operations

·         Partition-Wise  Joins in a Data Warehouse

相关知识:Partition-Wise  Operations – New Features in 12c and 18c

Modifying  the Partitioning Strategy 参见这里的文档说明。

Online  Merging of Partitions and Subpartitions

这是18c(18.1.0)中针对分区技术的一个很酷的改进,在不影响业务的情况下,可以在线合并分区或子分区。参见这里的文档说明。

19c

19.2

Hybrid  partitioned tables--混合分区表

相关文章:

Oracle分区技术特性

Oracle 的分区是一种“分而治之”的技术,通过将大表、索引分成可以独立管理的、小的 Segment,从而避免了对每个对象作为一个大的、单独的 Segment 进行管理,为海量数据访问提供了可伸缩的性能。自从 Oracle 引入分区技术以来,Orac…...

Hive操作库、操作表及数据仓库的简单介绍

数据仓库和数据库 数据库和数仓区别 数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别 操作型处理(数据库),叫联机事务处理OLTP(On-Line Transaction Processing),也可以称面向用户交易的处理系统,它是针对具体业务…...

智能网联汽车:人工智能与汽车行业的深度融合

内容概要 在这个快速发展的时代,智能网联汽车已经不再是科幻电影的专利,它正在悄然走进我们的日常生活。如今,人工智能(AI)技术与汽车行业的结合犹如一场科技盛宴,让我们看到了未来出行的新方向。通过自动…...

VUE 循环的使用方法集锦

vue---循环方式以及跳出循环 在做VUE项目开发过程中&#xff0c;数据循环是常见的操作方式&#xff0c;以下是几种常见的数据循环方式&#xff1a; 一、for循环 let data [1,2,3,4,5,6,7,8,9,10]; for(let i0; i<data.length; i){console.log(data[i]);if(i>5){break;…...

Centos部署资料

1. 离线rpm 1.1 下载地址&#xff1a; 阿里云rpmfind 1.2 本地安装&#xff1a; [rootlocalhost ~]# yum localinstall unzip-6.0-21.el7.x86_64.rpm2. 服务器操作 2.1 修改网络ip [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ [rootlocalhost network-script…...

AI之硬件对比:据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D

AI之硬件对比&#xff1a;据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D 目录 Nvidia的显卡 Nvidia的5090/5080/4090/4080&#xff1a;据传传英伟达Nvidia RTX 5090后续推出32GB版且RTX 5080后续或推出24GB版 RTX 5090相较于RTX 4090&…...

其他节点使用kubectl访问集群,kubeconfig配置文件 详解

上述两种方式&#xff1a;可使用kubectl连接k8s集群。 $HOME/.kube/config 是config文件默认路径&#xff0c;要么直接定义环境变量&#xff0c;要么就直接把文件拷过去 config文件里面&#xff0c;定义了context&#xff0c;里面指定了用户和对应的集群信息&#xff1a; ku…...

【鉴权】深入解析OAuth 2.0:访问令牌与刷新令牌的安全管理

目录 引言一、访问令牌&#xff08;Access Token&#xff09;1.1 访问令牌概述1.2 访问令牌的格式1.2.1 JWT&#xff08;JSON Web Token&#xff09;1.2.1.1 JWT 结构1.2.1.2 示例 JWT 1.2.2 Bearer Token 1.3 访问令牌的有效期1.4 访问令牌的工作流程 二、刷新令牌&#xff08…...

【AI视频换脸整合包及教程】AI换脸新星:Rope——让换脸变得如此简单

在数字技术迅猛发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;的应用已经渗透到了我们生活的方方面面&#xff0c;从日常的语音助手到复杂的图像处理&#xff0c;无不体现着AI技术的魅力。特别是在娱乐和创意领域&#xff0c;AI技术更是展现出了惊人的潜力。其中&a…...

限界上下文(Bounded Context)

限界上下文(Bounded Context):领域驱动设计中的重要概念 在领域驱动设计(Domain-Driven Design, DDD)中,限界上下文(Bounded Context)是一个非常重要的概念。限界上下文定义了一个特定领域模型的边界,确保在这个边界内,领域模型的术语、规则和逻辑是一致的。通过明确…...

20241105专家访谈学习资料

“两性一度” 即高阶性、创新性、挑战度。“三性一度”是指教学目标的适应性、教学内容的先进性、教学实施的实践性及教学评价的有效度。“四性一度”是指系统性、层次性、前瞻性、专业性以及培养目标达成度。“二性一度”用词比较规范、标准统一&#xff0c;“三性一度”和“四…...

Docling:开源的文档解析工具,支持多种格式的解析和转换,可与其他 AI 工具集成

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…...

oracle如何在不同业务场景下正确使用聚合查询、联合查询及分组查询?

引言 在数据库管理系统中&#xff0c;SQL&#xff08;结构化查询语言&#xff09;是用于与数据库进行交互的标准语言。 Oracle数据库作为一种广泛使用的关系数据库管理系统&#xff0c;提供了丰富的SQL功能&#xff0c;包括聚合查询、联合查询和分组查询等。 这些功能在数据…...

Hearts of Iron IV 之 Archive Modification

存档位置 C:\Users\XXX\Documents\Paradox Interactive\Hearts of Iron IV\save games 打开文档 打开C:\Users\XXX\Documents\Paradox Interactive\Hearts of Iron IV\settings.txt&#xff0c;将save_as_binaryyes 改成save_as_binaryno&#xff0c;然后退出游戏重新存档&a…...

python manage.py下的命令及功能

python manage.py 是 Django 框架中用于管理 Django 项目的命令行工具 1、startapp&#xff1a; 功能&#xff1a;创建一个新的 Django 应用程序。 用法&#xff1a;python manage.py startapp appname 示例&#xff1a;python manage.py startapp blog 2、startproject&a…...

建筑行业员工离职SOP的数字化管理

在建筑行业&#xff0c;随着数字化转型的深入&#xff0c;对员工离职的标准操作程序&#xff08;SOP&#xff09;进行数字化管理变得尤为重要。这不仅有助于提高管理效率&#xff0c;还能确保离职流程的规范性和合规性。本文将探讨建筑行业如何通过数字化手段管理员工离职SOP&a…...

江协科技STM32学习- P30 FlyMCU串口下载STLink Utility

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

05LangChain实战课 - 提示工程与FewShotPromptTemplate的应用

LangChain实战课 - 提示工程与FewShotPromptTemplate的应用 提示工程的重要性 在LangChain框架中&#xff0c;提示工程是构建有效大模型应用的关键。通过精心设计的提示&#xff0c;我们可以引导大语言模型&#xff08;LLM&#xff09;生成预期的输出。本节课深入探讨了如何利…...

【数据处理】数据预处理·数据变换(熵与决策树)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必备知识_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…...

UE5 随机生成地牢关卡

参考视频&#xff1a;【UE5 | 教程 | 地编】虚幻引擎5 中创建史诗级 程序化 地下城_哔哩哔哩_bilibili 首先创建一个父项Actor 这个BOX碰撞提是和地板重叠的 这三个是场景组件&#xff0c;这个ExitsFolder下面的箭头等会会在子蓝图中添加 接下来创建BP_MasterRoom的子蓝图&…...

【Cpp】命名空间

前言 在C语言中&#xff0c;命名冲突通常发生在不同的作用域中使用了相同的标识符: 全局变量和局部变量同名&#xff1a; 如果在全局作用域和局部作用域中都定义了同名的变量&#xff0c;那么在局部作用域中&#xff0c;全局变量会被局部变量遮蔽。 int globalVar; // 全局变量…...

ESP32学习笔记——LOG日志库的使用

注&#xff1a;本文由CHATGPT辅助创作&#xff0c;未经验证&#xff0c;实际工程使用请仔细甄别。 对于设置日志级别的几种方式&#xff08;esp_log_level_set、CONFIG_LOG_DEFAULT_LEVEL、CONFIG_LOG_MAXIMUM_LEVEL、LOG_LOCAL_LEVEL &#xff09;容易混淆&#xff0c;特此学习…...

51c~C语言~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12428240 一、C语言和C的区别 ​ C语言虽说经常和C在一起被大家提起&#xff0c;但可千万不要以为它们是一个东西。现在我们常用的C语言是C89标准&#xff0c;C是C99标准的。C89就是在1989年制定的标准&#xff0c;如今最新…...

$nextTick 实现原理

Vue 使用 nextTick 来确保数据更新后的 DOM 操作在更新完成后执行。其核心逻辑是将回调放到微任务或宏任务队列中&#xff0c;确保回调在 DOM 更新完成后执行。 Vue.js 会利用不同的浏览器 API 来模拟 nextTick 的延迟执行&#xff0c;通常是通过&#xff1a; Promise&#x…...

kelp protocol

道阻且长,行而不辍,未来可期 有很长一段时间我都在互联网到处拾金,but,东拼西凑的,总感觉不踏实,最近在老老实实的看官方文档 & 阅读白皮书 &看合约,挑拣一些重要的部分配上官方的证据,和过路公主or王子分享一下,愿我们早日追赶上公司里那些可望不可及大佬们。…...

Golang--面向对象

Golang语言面向对象编程说明&#xff1a; Golang也支持面向对象编程(OOP)&#xff0c;但是和传统的面向对象编程有区别&#xff0c;并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。Golang没有类(class)&#xff0c;Go语言的结构体(struct)和其…...

深度学习经典模型之LeNet-5

1 LeNet-5 1.1 模型介绍 ​ LeNet-5是由 L e C u n LeCun LeCun 提出的一种用于识别手写数字和机器印刷字符的卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09; [ 1 ] ^{[1]} [1]&#xff0c;其命名来源于作者 L e C u n LeCun LeCun的名字…...

Abaqus随机骨料过渡区孔隙三维网格插件:Random Agg ITZ Pore 3D (Mesh)

插件介绍 Random Agg ITZ Pore 3D (Mesh) V1.0 - AbyssFish 插件可在Abaqus内参数化建立包含水泥浆基体、粗细骨料、界面过渡区&#xff08;ITZ&#xff09;、孔隙在内的多相材料混凝土细观背景网格模型。 模型说明 插件采用材料映射单元的方式&#xff0c;将不同相材料赋值…...

PG数据库 jsonb字段 模糊查询

背景&#xff1a; 项目由于多语言的设计&#xff0c;将字段设置成json字段类型&#xff0c;同时存储中文和英文 页面上通过输入框实现模糊的查询 一、表结构&#xff1a;name字段设置jsonb类型 二、表数据 3、Mybatis编写sql select pp.name ->>zh-CN as pmsProductNam…...

javascript-Web APLs (四)

日期对象 用来表示时间的对象 作用&#xff1a;可以得到当前系统时间 在代码中发现了 new 关键字时&#xff0c;一般将这个操作称为 实例化 //创建一个时间对象并获取时间 //获得当前时间 const date new Date() //获得指定时间 const date new Date(2006-6-6) console.log(…...