Oracle基础教程之反向键索引

栏目: 数据库 · 发布时间: 7年前

内容简介:反向键索引是一种B-tree索引,它在保持列顺序的同时,物理地改变每个索引键的字节(反向键索引除了ROWID和still之外,反转每个索引列的字节)。例如,如果索引键为20,如果在十六进制中存储为这个键的两个字节是C1,则是标准b树索引中的15个字节,那么一个反向键索引将字节存储为15,C1。优点:反转键解决了b树索引右侧叶块争用的问题。这个问题在Oracle Real Application cluster (Oracle RAC)数据库中尤其突出,在这个数据库中多个实例反复修改同一个块。例如,在ord

反向键索引是一种B-tree索引,它在保持列顺序的同时,物理地改变每个索引键的字节(反向键索引除了ROWID和still之外,反转每个索引列的字节)。例如,如果索引键为20,如果在十六进制中存储为这个键的两个字节是C1,则是标准b树索引中的15个字节,那么一个反向键索引将字节存储为15,C1。

优点:

反转键解决了b树索引右侧叶块争用的问题。这个问题在Oracle Real Application cluster (Oracle RAC)数据库中尤其突出,在这个数据库中多个实例反复修改同一个块。例如,在orders表中,订单的主键是顺序的。集群中的一个实例添加了order 20,而另一个实例添加了21,每个实例都将其关键字写入索引右侧的同一个叶块。

在反向键索引中,字节顺序的反转分布在索引中的所有叶键上。例如,在标准键索引中相邻的20和21这样的键现在被分开存储在不同的块中(索引会在左边,中间,右边-到处都是)。所以争论就这样消失了。因此,顺序键插入的I/O分布更均匀。

缺点:

但是,必须指出的是:现在整个索引最好在缓冲区缓存中,而在之前——只有热的右侧需要在缓存中进行有效的插入。如果索引不能放入缓存,我们很可能会将缓冲区繁忙的等待变成物理IO等待,这可能更糟(补救比症状更糟糕)。

由于索引中的数据在存储时没有按列键排序,所以反向键安排在某些情况下消除了运行索引范围扫描查询的能力。例如,如果用户对大于20的订单ID发出查询,那么数据库就不能从包含该ID的块开始,然后水平地通过叶块进行。

总结:

这些索引旨在消除插入应用程序上的索引热点。这些索引对于插入性能非常好,但是它们是有限的,因为数据库不能使用它们进行索引范围扫描。

语法:

create index <INDEX_NAME> on <TABLE_NAME> (<COLUMN_NAME>, <COLUMN_NAME>)

REVERSE;

参考:What Are Reverse Key Indexes? (文档 ID 1070627.6)

更多Oracle相关信息见 Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

Linux公社的RSS地址: https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-08/153361.htm


以上所述就是小编给大家介绍的《Oracle基础教程之反向键索引》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

了不起的Node.js

了不起的Node.js

劳奇 (Guillermo Rauch) / 赵静 / 电子工业出版社 / 2014-1 / 79.00元

本书是一本经典的 Learning by Doing的书籍。它由 Node社区著名的 Socket.IO作者—— Guillermo Rauch,通过大量的实践案例撰写,并由 Node社区非常活跃的开发者—— Goddy Zhao翻译而成。 本书内容主要由对五大部分的介绍组成: Node核心设计理念、 Node核心模块 API、Web开发、数据库以及测试。从前到后、由表及里地对使用 Node......一起来看看 《了不起的Node.js》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具