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

【Oracle数据库指南】第35篇:Oracle特殊对象——簇与索引组织表(IOT)

上一篇【第34篇】Oracle索引管理与优化详解下一篇【第36篇】Oracle用户与权限管理详解完整版明日更新敬请期待摘要除了普通堆组织表Heap-Organized Table之外Oracle还提供了两种特殊的表存储结构**簇Cluster**将频繁一起查询的多张表的相关行存储在同一数据块中消除连接操作的物理I/O**索引组织表IOTIndex-Organized Table**将行数据直接存储在B树索引结构中适合主键访问的应用场景。本文详细讲解这两种结构的原理、创建方式、适用场景与注意事项。一、簇Cluster概述1.1 什么是簇簇是一种将相关表的相关行物理存储在同一数据块的存储结构。当两张表经常通过某个公共列进行连接查询时簇能将两表中相同连接键值对应的行存放在一起从而减少连接操作的I/O次数。普通表的连接问题查询SELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno d.deptno 普通表 EMP 表块Block 1 (empno7369,deptno20) | Block 2 (empno7499,deptno30) | ... DEPT 表块Block 10(deptno20,RESEARCH) | Block 11(deptno30,SALES) | ... → 查询时需要访问 EMP 的块再访问 DEPT 的块至少两次块读取簇的解决方案簇按 deptno 将两表行存储在一起 Block 1DEPT deptno20 所有 deptno20 的 EMP 行 Block 2DEPT deptno30 所有 deptno30 的 EMP 行 → 连接查询只需读取一次块即可获取两表数据1.2 簇的类型类型说明索引簇Index Cluster用B树索引管理簇键适合等值查询哈希簇Hash Cluster用哈希函数定位行等值查询最快二、索引簇Index Cluster2.1 创建索引簇-- 步骤1创建簇指定簇键列和每个键值对应的块大小CREATECLUSTER scott.emp_dept_cluster(deptno NUMBER(2)-- 簇键列连接键)SIZE600-- 每个簇键值预计占用的字节数TABLESPACEusers_data;-- 步骤2为簇创建索引必须先创建索引才能插入数据CREATEINDEXscott.idx_emp_dept_clusterONCLUSTER scott.emp_dept_cluster;-- 步骤3在簇中创建 DEPT 表CREATETABLEscott.dept_clustered(deptno NUMBER(2),dname VARCHAR2(14),loc VARCHAR2(13))CLUSTER scott.emp_dept_cluster(deptno);-- 指定簇键-- 步骤4在簇中创建 EMP 表CREATETABLEscott.emp_clustered(empno NUMBER(4),ename VARCHAR2(10),job VARCHAR2(9),sal NUMBER(7,2),deptno NUMBER(2))CLUSTER scott.emp_dept_cluster(deptno);-- 同一个簇键-- 步骤5先插入DEPT数据再插入EMP数据INSERTINTOscott.dept_clusteredSELECT*FROMscott.dept;INSERTINTOscott.emp_clusteredSELECTempno,ename,job,sal,deptnoFROMscott.emp;COMMIT;2.2 使用簇查询-- 连接查询簇表的连接性能最优SELECTe.empno,e.ename,e.job,d.dnameFROMscott.emp_clustered eJOINscott.dept_clustered dONe.deptnod.deptnoWHEREe.deptno20;-- Oracle 可能使用 CLUSTER 访问路径比普通表连接少很多 I/O2.3 删除簇-- 删除簇必须先删除簇中的表DROPTABLEscott.emp_clustered;DROPTABLEscott.dept_clustered;DROPCLUSTER scott.emp_dept_cluster;-- 或者一步删除CASCADE CONSTRAINTS 同时删除外键约束DROPCLUSTER scott.emp_dept_cluster INCLUDINGTABLESCASCADECONSTRAINTS;三、哈希簇Hash Cluster3.1 哈希簇原理哈希簇用哈希函数直接计算出行所在的数据块查询时无需读索引直接计算目标块地址实现一次I/O读取最理想情况。3.2 创建哈希簇-- 创建哈希簇CREATECLUSTER scott.orders_hash_cluster(order_id NUMBER(10)-- 哈希键列)HASHKEYS100000-- 预计的不同键值数量影响哈希桶数SIZE300-- 每个哈希键值预计字节数HASHISorder_id-- 可选直接用键值做哈希键值必须为正整数TABLESPACEusers_data;-- 在哈希簇中创建表不需要额外建索引CREATETABLEscott.orders_hashed(order_id NUMBER(10),customer_id NUMBER(6),order_dateDATE,amount NUMBER(10,2))CLUSTER scott.orders_hash_cluster(order_id);3.3 哈希簇的适用场景适合哈希簇不适合哈希簇主键等值查询WHERE order_id 10086范围查询WHERE order_id 1000键值数量稳定不大幅增长键值数量动态增长导致冲突增加高频率单行读取全表扫描比普通表更差四、索引组织表IOT4.1 什么是IOT普通表堆表中数据行存储在数据段中索引存储在独立的索引段中通过 ROWID 关联。IOT 不同将整行数据存储在B树主键索引的叶节点中没有独立的数据段。普通堆表Heap Table 数据段(7369, SMITH, 800, ...) ← 无序存储 索引段empno7369 → ROWID:AAABcc... ← 需要两次访问 IOTIndex-Organized Table 主键索引叶节点empno7369 SMITH 800 ... ← 按主键顺序存储一次访问4.2 创建IOT-- 创建IOT必须指定主键主键是IOT的组织键CREATETABLEscott.zip_codes(zip_code VARCHAR2(10)PRIMARYKEY,city VARCHAR2(50)NOTNULL,province VARCHAR2(50),latitude NUMBER(8,5),longitude NUMBER(8,5))ORGANIZATIONINDEX-- 关键语法指定为IOTTABLESPACEusers_data PCTTHRESHOLD50-- 行数据超过块大小50%时溢出到溢出段INCLUDING longitude-- 从此列开始的列放入溢出段可选OVERFLOWTABLESPACEusers_data;-- 溢出段表空间4.3 IOT 的特点优点主键查询只需一次I/O无需回表行按主键顺序存储范围查询高效不需要独立的主键索引减少存储空间缺点非主键列的查询不如普通表无额外索引时需全表扫描行较宽时会有溢出段增加管理复杂度不能直接获取 ROWID有 UROWID但不同于普通 ROWIDDML 操作时需要维护 B 树结构代价较高4.4 IOT的适用场景字典/代码表数据量小、以主键查询为主如邮编、国家代码历史数据只按主键查询、很少更新数据同步目标以主键为唯一标识的参考数据表4.5 在IOT上创建二级索引-- 为IOT创建二级索引提高非主键列的查询性能CREATEINDEXscott.idx_zip_cityONscott.zip_codes(city)TABLESPACEusers_index;-- 注意IOT的二级索引的行地址是逻辑ROWID包含主键猜测值五、查看特殊对象的数据字典-- 查看所有簇SELECTcluster_name,cluster_type,hashkeys,functionFROMdba_clustersWHEREownerSCOTT;-- 查看簇中包含的表SELECTtable_name,cluster_nameFROMdba_tablesWHEREownerSCOTTANDcluster_nameISNOTNULL;-- 查看IOTSELECTtable_name,iot_typeFROMdba_tablesWHEREownerSCOTTANDiot_typeIOT;-- 查看IOT溢出段SELECTtable_name,iot_typeFROMdba_tablesWHEREownerSCOTTANDiot_typeIOT_OVERFLOW;六、普通表 vs 簇 vs IOT 对比特性普通堆表索引簇哈希簇IOT主键查询两次I/O两次I/O一次I/O最优一次I/O范围查询索引回表索引扫描不支持全扫直接范围扫描多表连接两次I/O一次I/O最优——DML性能高中中低B树维护全表扫描高中差中适用场景通用频繁连接的关联表高频等值查询主键查询为主七、最佳实践簇适合极少变化的主从关系表如 DEPT/EMP 这类数据量不大、连接频繁的表哈希簇适合高频等值主键查询事先预估好键值数量HASHKEYS过小会产生碰撞IOT 适合小型字典/代码表行宽不超过一个块的30%-40%最佳避免频繁溢出大多数场景使用普通堆表最灵活DML 性能最好配合合理索引已足够评估收益再使用特殊结构虽有针对性优势但管理复杂度和限制也更多八、总结Oracle 特殊对象的核心要点索引簇多表共享同一物理块消除连接 I/O适合稳定的关联表哈希簇等值主键查询一次 I/O需预估键值数量IOT行数据存储在主键B树叶节点主键查询无回表选型依据查询模式是主键等值、范围查询、多表连接还是通用CRUD大多数场景普通堆表 合理索引是最优选择上一篇【第34篇】Oracle索引管理与优化详解下一篇【第36篇】Oracle用户与权限管理详解完整版明日更新敬请期待参考资料《Oracle 11g数据库管理员指南》— 刘宪军著Oracle官方文档Database Administrator’s Guide - Managing ClustersOracle官方文档Database Concepts - Index-Organized Tables

相关文章:

【Oracle数据库指南】第35篇:Oracle特殊对象——簇与索引组织表(IOT)

上一篇【第34篇】Oracle索引管理与优化详解 下一篇【第36篇】Oracle用户与权限管理详解(完整版)(明日更新,敬请期待) 摘要 除了普通堆组织表(Heap-Organized Table)之外,Oracle还提…...

【Oracle数据库指南】第32篇:Oracle归档日志管理与LogMiner日志分析

上一篇【第31篇】Oracle重做日志文件管理操作详解 下一篇【第33篇】Oracle表管理与分区表详解 摘要 归档日志(Archive Log)是Oracle数据库实现时间点恢复的核心机制,也是数据库备份恢复策略的重要组成部分。本文详细讲解归档模式的开启与配置…...

购买腾讯云时最容易被忽略的痛点:配置、成本和运维闭环

很多客户在购买腾讯云或开始使用腾讯云时,真正的痛点往往不是“不会下单”,而是下单前后缺少一套清晰的决策和运维闭环。第一个痛点是配置选择不确定。不少团队会先纠结 CPU、内存、带宽、地域、系统盘和数据盘怎么选。配置买低了担心业务跑不动&#xf…...

基于Terraform与Ansible的OpenClaw私有化AI代理自动化部署实践

1. 项目概述如果你和我一样,对AI助手的能力有更高的期待,希望它能深度融入你的工作流,甚至能帮你处理一些自动化任务,那么OpenClaw这个项目绝对值得你花时间研究。它不是一个简单的聊天机器人,而是一个可以部署在你私有…...

如何在5分钟内体验完整的Windows 12网页版:创新系统模拟器终极指南

如何在5分钟内体验完整的Windows 12网页版:创新系统模拟器终极指南 【免费下载链接】win12 Windows 12 网页版,在线体验 点击下面的链接在线体验 项目地址: https://gitcode.com/gh_mirrors/wi/win12 想要在浏览器中运行完整的Windows系统界面吗&…...

Cursor Pro破解工具:3分钟快速激活高级功能的终极方案

Cursor Pro破解工具:3分钟快速激活高级功能的终极方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tri…...

3步搞定安卓应用Windows安装:告别臃肿模拟器的终极解决方案

3步搞定安卓应用Windows安装:告别臃肿模拟器的终极解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了那些占用大量系统资源、启动缓慢的…...

深度学习提取结构光条中心线项目的对比实验与消融实验统计分析方法研究

深度学习提取结构光条中心线项目的对比实验与消融实验统计分析方法研究 1 引言 线结构光三维测量技术凭借其非接触、高精度、快速测量等优势,在工业测量、三维重建、智能制造等领域得到了广泛应用。在结构光视觉测量系统中,光条中心线的提取精度直接决定了三维重建和尺寸测…...

Coze平台智能物资匹配系统——完整设计与实现指南

Coze平台智能物资匹配系统——完整设计与实现指南 文档概述 本文档提供一套完整的技术解决方案,用于在Coze(扣子)平台上搭建智能物资匹配系统。该系统以“残值+运费最小化”为核心优化目标,支持用户输入地点和物资需求或上传表格文件,自动匹配最佳物资并输出等多组备选方…...

从零打造你的AI图像放大神器:waifu2x-caffe完全指南

从零打造你的AI图像放大神器:waifu2x-caffe完全指南 【免费下载链接】waifu2x-caffe waifu2xのCaffe版 项目地址: https://gitcode.com/gh_mirrors/wa/waifu2x-caffe 想象一下,你珍藏多年的动漫壁纸分辨率太低,无法作为4K显示器背景&a…...

为你的Nodejs后端服务快速集成大模型能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为你的Nodejs后端服务快速集成大模型能力 当你的Node.js应用需要添加智能对话或内容生成功能时,直接对接各大模型厂商的…...

[特殊字符] 科普:论文查重的AI原理是什么?这个免费工具把“黑科技“讲明白了

同学们好,我是你们的论文写作科普博主。 今天不聊怎么选题,不聊怎么写文献综述,咱们来聊一个99%的同学都踩过坑的环节——查重。 先问大家一个问题:你知道查重到底是怎么查的吗? 很多同学以为查重就是"把你的文…...

现在的人为什么不焦虑了!

就拿我来说吧!现在你努力没有方向,焦虑只能让自己的什么出现问题,晚上睡不好的,伴随着偏头疼,是在是太难了。 !、而且回过头来看我们真的需要那么多消费吗?消费降一点,吃踏实点&…...

如何应对论文AIGC检测算法升级?2026实测5大降AI工具(附优缺点)

最近看了一些行业报告,AI工具在写作方面的普及率真的已经超乎想象了。 很多大学生在写论文时也都习惯用AI来辅助寻找灵感、提高效率。 与此同时,相关部门针对人工智能写作出台了一系列规定,各大学术检测平台也都在不断升级AIGC检测算法。 现…...

Windows Cleaner终极指南:5个技巧让C盘空间瞬间释放

Windows Cleaner终极指南:5个技巧让C盘空间瞬间释放 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的开源…...

Windows APK安装器完整指南:无需安卓手机直接安装应用

Windows APK安装器完整指南:无需安卓手机直接安装应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想要在Windows电脑上直接安装Android应用吗&#xff…...

BilibiliVideoDownload故障排查指南:从登录失败到下载中断的全面解决方案

BilibiliVideoDownload故障排查指南:从登录失败到下载中断的全面解决方案 【免费下载链接】BilibiliVideoDownload Cross-platform download bilibili video desktop software, support windows, macOS, Linux 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…...

【限时开放】ChatGPT-Sora 2联合推理链搭建教程:含Prompt模板库、错误码速查表与延迟压测数据(仅存96小时)

更多请点击: https://intelliparadigm.com 第一章:ChatGPT-Sora 2联合推理链的核心架构与演进逻辑 ChatGPT-Sora 2联合推理链代表了多模态大模型协同推理范式的重大跃迁——它并非简单地将语言模型与视频生成模型并联调用,而是构建了语义对齐…...

微信聊天记录永久保存:免费开源工具WeChatExporter完整使用指南

微信聊天记录永久保存:免费开源工具WeChatExporter完整使用指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾担心珍贵的微信聊天记录会随着手机更…...

3分钟快速上手:Sonar CNES Report代码质量报告生成完整指南

3分钟快速上手:Sonar CNES Report代码质量报告生成完整指南 【免费下载链接】sonar-cnes-report Generates analysis reports from SonarQube web API. 项目地址: https://gitcode.com/gh_mirrors/so/sonar-cnes-report Sonar CNES Report 是一个强大的开源工…...

Windows 11本地部署最新大模型深度方案

一、方案概述 随着大语言模型的快速发展,本地部署已成为保护数据隐私、降低API成本的重要选择。本方案将详细介绍在Windows 11系统上部署最新大模型的完整流程,包括硬件配置、环境搭建、模型选择和性能优化。 二、硬件配置要求 2.1 最低配置 GPU: NVIDIA…...

3步快速安装:APK Installer让你在Windows电脑上直接运行Android应用

3步快速安装:APK Installer让你在Windows电脑上直接运行Android应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows电脑上直接安装和运行Android…...

初创团队如何利用Taotoken管理多模型API成本

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用Taotoken管理多模型API成本 对于初创团队而言,在快速迭代产品、集成多个大语言模型以增强功能时&…...

5个7+ Taskbar Tweaker深度诊断技巧:彻底解决Windows任务栏定制难题

5个7 Taskbar Tweaker深度诊断技巧:彻底解决Windows任务栏定制难题 【免费下载链接】7-Taskbar-Tweaker A Windows taskbar customization tool for Windows 7, Windows 8, and Windows 10 项目地址: https://gitcode.com/gh_mirrors/7t/7-Taskbar-Tweaker 7…...

Boomi宣布2026财年亚太及日本地区合作伙伴奖得主

数据激活公司Boomi™今日公布其2026财年亚太及日本地区合作伙伴奖获奖名单。该奖项旨在表彰在该地区推动创新和为客户创造可衡量业务成果的Boomi合作伙伴。 本次获奖企业充分运用Boomi企业平台的全面能力实现数据激活、简化复杂流程和加速智能体转型,帮助客户更快创…...

无人机协议

1. MAVLink协议 概述:MAVLink是一种轻量级、低带宽的无人机通信协议,它支持点对点、广播和多播通信,并且可以在不同的平台上使用。应用:MAVLink协议广泛应用于PX4、ArduPilot等开源飞控系统中,用于地面站和无人机之间…...

终极指南:掌握AMD Ryzen深度调试的完整解决方案

终极指南:掌握AMD Ryzen深度调试的完整解决方案 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.…...

从键盘到5G模组:深入浅出聊聊USB那些五花八门的‘设备类’(HID/CDC/MSC)

从键盘到5G模组:深入浅出聊聊USB那些五花八门的‘设备类’(HID/CDC/MSC) 当你在键盘上敲下字符、用U盘拷贝文件,或是通过4G模块联网时,背后都有一群看不见的"协议翻译官"在忙碌——它们就是USB设备类&#x…...

如何通过抖店订单接口实现订单状态管理与履约自动化?

对于电商业务管理系统的开发者而言,订单状态的管理是电商履约流程中最核心的环节。当消费者在抖音小店完成下单后,订单会经历支付、发货、收货等多个状态阶段,每个阶段都需要系统做出相应的业务响应。抖店开放平台提供的订单接口体系&#xf…...

从零到跑通:Windows下OTB100数据集与Matlab评测环境保姆级避坑指南

从零到跑通:Windows下OTB100数据集与Matlab评测环境保姆级避坑指南 刚接触目标跟踪领域的研究者,往往需要从经典数据集评测开始。OTB(Object Tracking Benchmark)作为目标跟踪领域的基石数据集,包含100个具有挑战性的视…...