阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle基础教程之反向键索引

136次阅读
没有评论

共计 898 个字符,预计需要花费 3 分钟才能阅读完成。

反向键索引是一种 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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计898字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中