读书笔记:Oracle组合分区:像俄罗斯套娃一样管理数据

news/2025/10/29 17:29:25/文章来源:https://www.cnblogs.com/www-htz-pw/p/19174992

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

Oracle组合分区:像俄罗斯套娃一样管理数据

什么是组合分区?

想象一下,你有一个巨大的文件柜(表),里面装满了文件(数据)。组合分区就像先按年份(范围分区)把文件分成几个大抽屉,然后在每个大抽屉里再按类别(哈希或列表分区)分成小格子。

核心特点:组合分区 = 一级分区 + 二级子分区

组合分区的9种"配方"

Oracle允许三种分区方式自由组合,就像调色板一样:

一级分区 二级分区 适用场景
范围分区 范围分区 时间维度多层细分
范围分区 列表分区 先按时间,再按类型
范围分区 哈希分区 先按时间,再均匀分布
列表分区 范围分区 先按类型,再按时间
列表分区 列表分区 多维度分类
列表分区 哈希分区 先按类型,再均匀分布
哈希分区 范围分区 先分布数据,再按时间
哈希分区 列表分区 先分布数据,再按类型
哈希分区 哈希分区 多层数据分布

实际案例:范围-哈希组合分区

业务场景

假设我们有一个销售记录表,需要:

  • 按年份进行大范围管理(方便数据归档)
  • 在每个年份内均匀分布数据(提高查询性能)

建表语句

CREATE TABLE composite_example (range_key_column date,    -- 范围分区键:日期hash_key_column int,      -- 哈希分区键:客户IDdata varchar2(20)
)
PARTITION BY RANGE (range_key_column)    -- 第一级:按日期范围分区
SUBPARTITION BY HASH(hash_key_column)    -- 第二级:按客户ID哈希分区
SUBPARTITIONS 2                          -- 每个范围分区再分2个子分区
(-- 2021年之前的数据分区PARTITION part_1 VALUES LESS THAN('2021-01-01')(SUBPARTITION part_1_sub_1, SUBPARTITION part_1_sub_2),-- 2022年之前的数据分区  PARTITION part_2 VALUES LESS THAN('2022-01-01')(SUBPARTITION part_2_sub_1, SUBPARTITION part_2_sub_2)
);

数据存储结构

表: composite_example
├── 分区part_1 (2021年前数据)
│   ├── 子分区part_1_sub_1 (哈希值1的数据)
│   └── 子分区part_1_sub_2 (哈希值2的数据)
└── 分区part_2 (2022年前数据)├── 子分区part_2_sub_1 (哈希值1的数据)└── 子分区part_2_sub_2 (哈希值2的数据)

数据路由过程

当插入一条新记录时:

  1. 范围路由:根据range_key_column决定进入part_1还是part_2
  2. 哈希路由:根据hash_key_column的哈希值决定进入该分区下的哪个子分区

更灵活的场景:范围-列表组合分区

业务需求

  • 2021年之前:数据量较小,只需要2个子分区(奇偶分类)
  • 2021年之后:数据量增大,且奇数代码数据更多,需要3个子分区

实现方案

CREATE TABLE composite_range_list_example (range_key_column date,      -- 范围分区键:日期code_key_column int,        -- 列表分区键:业务代码data varchar2(20)
)
PARTITION BY RANGE (range_key_column)
SUBPARTITION BY LIST(code_key_column)  -- 按代码值列表分区
(-- 2021年前:2个子分区PARTITION part_1 VALUES LESS THAN('2021-01-01')(SUBPARTITION part_1_sub_1 VALUES(1,3,5,7),   -- 奇数代码SUBPARTITION part_1_sub_2 VALUES(2,4,6,8)),  -- 偶数代码-- 2022年前:3个子分区(应对数据增长)PARTITION part_2 VALUES LESS THAN('2022-01-01')  (SUBPARTITION part_2_sub_1 VALUES(1,3),       -- 小奇数SUBPARTITION part_2_sub_2 VALUES(5,7),       -- 大奇数  SUBPARTITION part_2_sub_3 VALUES(2,4,6,8))   -- 偶数
);

最终分区结构

总共5个物理子分区:
- part_1_sub_1 (2021年前,代码1,3,5,7)
- part_1_sub_2 (2021年前,代码2,4,6,8)  
- part_2_sub_1 (2022年前,代码1,3)
- part_2_sub_2 (2022年前,代码5,7)
- part_2_sub_3 (2022年前,代码2,4,6,8)

组合分区的核心优势

1. 管理灵活性

  • 可以针对不同时期的数据采用不同的细分策略
  • 适应数据增长和业务变化的需求

2. 性能优化

  • 分区消除可以在两个层级上工作
  • 查询时可以跳过整个分区或只扫描相关子分区

3. 维护便捷

  • 可以针对单个子分区进行备份、恢复操作
  • 数据归档时可以直接删除整个时间分区

4. 存储效率

  • 只有子分区占用实际物理存储空间
  • 分区本身只是逻辑容器,开销极小

使用建议

选择组合分区当

  • 数据量非常大,需要多级管理
  • 业务查询模式涉及多个维度
  • 需要灵活的数据生命周期管理
  • 不同时期的数据特征差异较大

注意事项

  • 设计时要考虑业务查询模式
  • 子分区数量不是越多越好,要平衡管理和性能
  • 定期评估分区策略是否仍然适合当前数据特征

组合分区就像给数据仓库装上了"智能导航系统",让海量数据的管理变得井井有条!

------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/950101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动对焦技术:TGV视觉检测方案中的关键

玻璃通孔(TGV)工艺在半导体封装中应用广泛,但在检测过程中面临诸多挑战, 主要体现在以下几点: 1、精度要求高 TGV技术的精度要求极高,通常是微米级。为了确保电气性能和信号传输的稳定性,任何微小的形变或尺寸偏…

红外热像仪 热成像相机 即插即用多场景适配

红外热像仪 热成像相机 即插即用多场景适配Red Eye Camera 是一款基于红外阵列高精度温度传感器与先进软件算法的非接触式热成像仪,可实时对视场范围内物体进行清晰红外成像。该设备具备512384像素的高分辨率,温度灵…

详细介绍:K8s学习笔记(十一) service

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vn.py的日志问题

vn.py的日志问题使用新版 vn.py 调试时, 发现没有日志, 然后写了下面一段代码跟踪:from vnpy.trader.setting import SETTINGS from vnpy.event import EventEngine from vnpy.trader.engine import MainEngine fro…

Oracle故障处理:create table 引起select语句hang住出现library cache lock事件

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle故障处…

OSI中七层模型

OSI中七层模型OSI中七层模型 1.物理层: 在物理媒介上传输原始的比特流。它定义了电气,机械,过程和功能规范,以激活。维持和断开物理链路。 关心的问题:电压大小,引脚数量,电缆类型,传输速率,信号同步等 协议/…

2025 年西安苹果手机维修公司最新推荐榜,聚焦技术实力与用户口碑深度解析

引言 随着西安苹果设备保有量年增 18%,维修需求同步攀升,但行业仍存在配件掺假率 12%、隐性收费占比 23% 等乱象。为破解选择难题,本次推荐榜联合该委员会开展专项测评,采用 “三维九维度” 评估体系:技术维度涵盖…

2025 年西安苹果电脑维修最新推荐榜,技术实力与市场口碑深度解析

引言 苹果电脑的精密构造与高端配置,使其维修对技术与服务的专业性要求极高。但西安维修市场仍存在配件以次充好、报价虚高、维修流程不透明等问题,据电子商会消费电子售后服务专业委员会 2024 年测评数据显示,西安…

Awesome GitHub Copilot:超级定制化AI编程助手工具集

Awesome GitHub Copilot是一个精心策划的GitHub Copilot定制化资源库,包含丰富的提示词、自定义指令和聊天模式,涵盖多种编程语言、开发框架和云服务平台,帮助开发者显著提升编程效率和代码质量。Awesome GitHub Co…

跟着视频学,从0开始学PostgreSQL数据库

首先,要清楚一个问题“为什么要学习PostgreSQL数据库”?PostgreSQL有很多优点,比如开源、免费、功能强大等等,基于这些优点,我国众多数据库厂商都选择PostgreSQL再次开发自己的产品,国内使用PG数据库的企业和项目…

SSD和HDD存储应该如何选择?

选择 SSD(固态硬盘) 和 HDD(机械硬盘) 的存储类型主要取决于你的需求、预算以及使用场景。以下是详细的比较和建议,帮助你在不同场景下做出最佳选择。1. SSD 和 HDD 的基本介绍 1.1 SSD(固态硬盘)特点:使用闪存…

基于大语言模型的浏览器自动化:playwright+browser-use

基于大语言模型的浏览器自动化:playwright+browser-use 1、安装nodejs https://nodejs.org/zh-cn/download 下载 node-v24.11.0-x64.msi 2、安装 playwrightnpx playwright install 3、安装 browser-use 包 首先需要安…

Git克隆远程仓库后,本地无感切换分支工作的验证

Git客户端克隆远程仓库后如果本地想切换到feature/add-info分支工作,直接切换即可。 关于无感切换的操作,说明如下: 在 Git 2.23+ 版本中,新增了 “隐含创建本地分支” 的功能:当你执行 git checkout feature/add…

2025 年锰钢编织筛网厂家最新推荐榜,技术实力与市场口碑深度解析,筛选优质靠谱供应商振动/滚筒/平筛/黑钢锰钢编织筛网公司推荐

引言 为精准筛选出 2025 年锰钢编织筛网领域优质靠谱的供应商,本次推荐榜测评工作联合矿业装备协会、金属制品工业协会共同开展。测评过程严格遵循 “多维度、重数据、强验证” 原则,从企业综合实力与产品核心竞争力…

P7353 [2020-2021 集训队作业] Tom Jerry 题解

Sol 注意到 T 想赢必须一步一步缩小 J 的移动空间,所以 T 最优只会移动到割点来缩小 J 的移动空间最终让 J 无处可移。 所以我们考虑建出原图的圆方树。 考虑对于一组询问,把 \(a\) 提起来作为根,那么设 \(b\) 是 \…

痞子衡嵌入式:在i.MXRTxxx下使能DMA链式传输可达到SPI从设备接收速率上限50Mbps

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT下使能DMA链式传输可达到SPI从设备接收速率上限50Mbps。最近痞子衡在帮一个 RT600 的 AR 眼镜客户优化 SPI 从设备接收数据的速率,我们知道 …

国产LTCC低通滤波器HT-LFCG-530+实测:完美替代LFCG-530+,5G/WiFi6/车规全场景

国产LTCC低通滤波器HT-LFCG-530+实测:完美替代LFCG-530+,5G/WiFi6/车规全场景封装对比 ① 尺寸:5.03.01.1 mm,与原版游标卡尺测量完全一致,焊盘0.450.65 mm,0.65 mm间距,8Pin,钢网不用改。 ② 重量:16.3 mg v…

C语言 打印菱形图案

先画图,找关系,搞明白关系就会做题了//数量关系 // 3.空数 4.星数 1.val:辅助值 2.层数// * 3=4-1 1 4=mid 1// *** 2=5-3 3 5=mid+1 …

Java并发编程利器:从ConcurrentHashMap到Fork/Join的奇幻之旅

上篇讲了Lock锁、AQS相关的内容,本篇讲一下线程安全的类,拿来即用无需其他操作就能达到线程安全的效果,省力又省心 ~ ~你是否曾为多线程编程中的各种坑而头疼?本文将用生动比喻和实用代码,带你轻松掌握Java并发容…