前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Oracle Concept》第三章 - 10

《Oracle Concept》第三章 - 10

作者头像
bisal
发布2019-08-31 19:01:37
4990
发布2019-08-31 19:01:37
举报
文章被收录于专栏:bisal的个人杂货铺

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/bisal/article/details/100145462

键值压缩技术

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

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

注意:

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

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

代码语言:javascript
复制
CREATE INDEX orders_mod_stat_ix ON orders ( order_mode, order_status );

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

640?wx_fmt=png
640?wx_fmt=png

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

640?wx_fmt=png
640?wx_fmt=png

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

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

640?wx_fmt=png
640?wx_fmt=png

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

参考:

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年08月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档