首页 > 数据库 >《Oracle Concept》第三章 - 10

《Oracle Concept》第三章 - 10

时间:2023-06-19 13:06:03浏览次数:63  
标签:10 Concept 前缀 压缩 索引 键值 Oracle order


背景:

按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。


本文主题:第三章《Indexes and Index-Organized Tables》 - Overview of Indexes。

键值压缩技术

Oracle能支持使用键值压缩技术对B树索引或者索引组织表中的主键列值部分进行压缩。键值压缩技术能极大降低索引消耗的磁盘空间。

通常,索引键值有两个部分,一个组片段和一个唯一片段。键值压缩会将索引键拆分为一个前缀(组片段)和一个后缀(唯一或者接近唯一的片段)。数据库通过在索引块的后缀项中共享前缀项实现压缩。

注意:

如果键值未定义一个唯一片段,数据库会将rowid追加到组片段中。

默认情况下,唯一索引的前缀会包含除了最后一个外的所有键列,而非唯一索引的前缀则包含了所有的键值列。例如,假设创建了oe.orders表的一个复合索引:

CREATE INDEX orders_mod_stat_ix ON orders ( order_mode, order_status );

在order_mode和order_status列上存在很多重复的值,一个索引数据块可能展示如下,

《Oracle Concept》第三章 - 10_Database

在示例中,键前缀将会包含order_mode和order_status值的组合。如果索引使用默认的键值压缩技术创建,重复的键值前缀,例如(online,0)和(online,2)将会被压缩。理论上,数据库会按照如下格式完成压缩,

《Oracle Concept》第三章 - 10_键值_02

后缀组成了索引行的压缩版本。每个后缀项都会指向一个前缀,存储在相同的索引数据块中。

另外,当创建压缩索引的时候,可以指定前缀的长度。例如,如果指定前缀长度是1,那么前缀就是order_mode,后缀将是order_status,rowid。上例中的值,索引将会分解online重复出现的次数,

《Oracle Concept》第三章 - 10_Database_03

这个索引在每个叶子块中最多只会存储一次指定的前缀。B树索引叶子块中的键值才会被压缩。分支块的键值后缀能被截断,但是不能被压缩。

参考:

1. 《Oracle Database Administrator's Guide》,可以了解如何使用压缩索引。

2. 《Oracle Database VLDB and Partitioning Guide》,可以了解如何使用键值压缩在分区索引上。

3. 《Oracle Database SQL Language Reference》,描述了CREATE INDEX的子句key_compression的使用。

标签:10,Concept,前缀,压缩,索引,键值,Oracle,order
From: https://blog.51cto.com/u_13950417/6512437

相关文章

  • 《Oracle Concept》第三章 - 8
    背景:按照《OracleConecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。本文主题:第三章《IndexesandIndex-OrganizedTables》-OverviewofIndexes。反向索引反向索引也是一种B-树类型的索引,和普通B-树索引不同的是,他会在物理层上将每个索引键值的字节逆序......
  • 《Oracle Concept》第三章 - 5
    背景:按照《OracleConecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。本文主题:第三章《IndexesandIndex-OrganizedTables》-OverviewofIndexes。索引扫描在索引扫描中,数据库会在语句中指定索引列值,遍历索引来提取数据。如果数据库扫描索引,他会消耗N次I......
  • 如何根据v$parameter查询Oracle隐含参数
    Oracle的隐含参数在Oracle的官方文档中是不会出现的,这些参数主要是Oracle内部用于控制某些功能的开关,或者就像今天eygle讲的,Oracle牛逼之处就是可能几年前开发的一个功能就放到当时的版本中,让你“试用”,但你却不知道,如果碰巧因为遇见了这个问题的bug,Oracle会告诉你可以使用这个参数......
  • Oracle的体系结构图万花筒
    虽然现在Oracle的版本频繁更新,但万变不离其宗,学习Oracle最重要的一张图就是Oracle体系结构图,由他延展开来的知识可谓是相当丰富,要是能讲清楚这张图,可以说你和大师很近了。这是来自杨大师公众号的一篇文章,汇总了各版本,Oracle高清体系结构图,《【图示篇】_Oracle10g,11g,12c,18c结构......
  • 非Oracle Linux下安装Oracle 19c
    《Oracle19c之RPM安装》介绍了在OracleLinux平台下安装Oracle19c的过程,其实无论是19c,还是11g,用OracleLinux会为你省不少的事情,毕竟同为Oracle产品,从推广角度看,肯定会相对其他平台提供更多的便利性,例如提前预安装了需要的Package,设置了信号量,创建了各种账号、路径和权限。这次采......
  • OpenJDK和Oracle JDK有什么区别和联系?
    《Linux7安装Oracle11g打怪经历》的安装过程中,启动图形界面,需要指定jre路径,当时使用yuminstalljdk安装的,并不能解决问题,查看版本才知道他是OpenJDK,最终使用OracleJDK,才解决的问题,那OpenJDK和OracleJDK究竟有什么区别?OpenJDKJava最早由SUN公司(SunMicrosystems,发起于美国斯坦......
  • Linux 7安装Oracle 11g打怪经历
    最近接到个需求,要将一套开发环境中Linux6平台的Oracle11g,迁移到两套Linux7平台,原以为很简单,但过程中,确实历经坎坷,就像过山车一般,解决这个问题,又碰到下一个。软件信息RedHatLinux7.5Oracle11.2.0.4坑坑坑1.软链接为了安装路径的标准和简便,可以使用软链接,语法如下,ln-s【目标......
  • 非Oracle Linux下Oracle 19c CDB数据库安装
    《非OracleLinux下安装Oracle19c》我们安装了non-cdb的19c数据库,通过这个脚本,还可以搭建cdb的数据库。1.修改安装脚本cp/etc/init.d/oracledb_ORCLCDB-19c/etc/init.d/oracledb_pdbisal-19c其中要改几处,ORACLE_SID改成新的,LISTENER_NAME改成新的,CREATE_AS_CDB之前我写的false,......
  • Windows服务器定时重启设置教程 103.216.155.x
    Windows系统的任务计划程序,可以添加计划任务,设置任务开始时间及执行的间隔,实现应用的自动执行。例如:实现定时重启、关机等常见的功能。如何使用参考以下步骤1、新建一个文本文件,将文件后缀改为bat,然后添加如下代码shutdown-r-f-t 0该命令的作用是立即强制重启机器。在文件中单......
  • Windows10搭建NFS服务
    1.下载haneWINNFSServerforWindows链接如下:https://www.hanewin.net/nfs-e.htm2.安装并且执行haneWINNFSServer安装完后,打开hanWin如下:进入Edit->Preferences进入Exports->Editexportsfile2.1修改配置文件添加一行配置如下:D:\ldc_res-name:nfs*(rw,sync......