您现在的位置是:群英 > 数据库 > 关系型数据库
什么是oracle索引反转?能解决什么问题
Admin发表于 2022-08-03 17:46:06808 次浏览
在实际案例的操作过程中,我们可能会遇到“什么是oracle索引反转?能解决什么问题”这样的问题,那么我们该如何处理和解决这样的情况呢?这篇小编就给大家总结了一些方法,具有一定的借鉴价值,希望对大家有所帮助,接下来就让小编带领大家一起了解看看吧。

在oracle中,索引翻转指的是在创建索引时,针对索引列的索引键值进行字节反转,进而实现分散存放不同子节点块的目的,是“B-tree”索引的一个分支;使用反向索引,能将索引列的键值进行反转,实现顺序的键值分散到不同的叶块中,从而减少索引块的争用。

本教程操作环境:windows10系统、Oracle 12c版、Dell G3电脑。

oracle索引反转是什么

反向索引作为B-tree索引的⼀个分⽀,主要是在创建索引时,针对索引列的索引键值进⾏字节反转,进⽽实现分散存放到不同叶

⼦节点块的⽬的。

反向索引针对的问题

使⽤传统的B-tree索引,当索引的列是按顺序产⽣时,相应的索引键值会基本分布在同⼀个叶块中。当⽤户对该列进⾏操作时,

难免会发⽣索引块的争⽤。

使⽤反向索引,将索引列的键值进⾏反转,实现顺序的键值分散到不同的叶块中,从⽽减少索引块的争⽤。

例如:键值1001、1002、1003,反转后1001、2001、3001,进⽽分散到不⽤的叶⼦节点块中。

当载入一些有序数据时,索引肯定会碰到与I/O相关的一些瓶颈。在数据载入期间,某部分索引和磁盘肯定会比其他部分使用频繁得多。为了解决这个问题,可以把索引表空间存放在能够把文件物理分割在多个磁盘上的磁盘体系结构上。

为了解决这个问题,Oracle还提供了一种反转键索引的方法。如果数据以反转键索引存储,这些数据的值就会与原先存储的数值相反。这样,数据1234、1235和1236就被存储成4321、5321和6321。结果就是索引会为每次新插入的行更新不同的索引块。

不能对位图索引和索引组织表进行反转键处理。

技巧:

如果您的磁盘容量有限,同时还要执行大量的有序载入,就可以使用反转键索引。

不可以将反转键索引与位图索引或索引组织表结合使用。

ORACLE DBA实践:创建反转关键字索引

对于大型联机事务处理系统来说,其中的表一般都很大,在这些表的主键是由序列号产生的,而且上面是有索引的。因此相邻的索引记录就可能存在同一个数据块中,这样会形成数据块的竞争。而随着时间流逝,会不断在这些表中删除旧的无用的数据,插入新的有用的数据,很显然删除的数据是序列号很小的旧数据,而插入的数据序列号是刚刚产生的(一定是大号),这就造成了另一个严重的问题:即该索引的树是往序列号大的一面偏,因此会使得树的深度加深从而使系统效率下降。

为了解决上述问题,oracle引入了反转关键字索引。反转关键字索引通过将关键字(序列号)的每个字节顺序颠倒过来再建索引的方法实现的。举例如下:

由上可见,原来相邻的order#经反转之后就不再相邻了,这样就可以把相邻的order#分散到不同的数据块中,上述问题也就迎刃而解。

但事物总是一分为二的,反转索引关键字也存在问题。例如在反转关键字索引的表上进行范围查询就会遇到麻烦。在正常索引的况下,满足条件的索引记录应该放在同一个或相邻的数据块中,速度会很快;而使用反转关键字索引之后,原来相邻的满足条件的索引记录已经被分散到多个数据块中,此事要完成查询操作只能进行全表扫描。因此在决定是否使用反转关键字索引时,要分清是插入操作重要,还是范围查询重要。



    以上就是关于“什么是oracle索引反转?能解决什么问题”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注群英网络,小编每天都会为大家更新不同的知识。

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

    标签: Oracle
    相关信息推荐
    2022-06-13 17:16:53 
    摘要:本篇文章给大家带来了sql注入的相关知识,SQL注入是服务端未严格校验客户端发送的数据,而导致服务端SQL语句被恶意修改并成功执行的行为,希望对大家有帮助。
    2022-06-09 17:58:18 
    摘要:本篇文章给大家带来了关于SQL的相关知识,其中主要介绍了常见的SQL注入类型的介绍以及原理讲解,包括了联合注入、布尔盲注、时间注入、报错注入等等内容,下面一起来看一下,希望对大家有帮助。
    2022-06-09 17:57:24 
    摘要:方法:1、建立数据库;2、单击工具栏上的“视图”图标,选择“关系”打开窗口;3、在“关系的添加表”窗口选择添加的表,单击“添加”将表添加到窗口,添加完成后点击“关闭”返回关系窗口;4、单击表中主键,并使另一张表与之相同,点击“确定”即可。
    群英网络助力开启安全的云计算之旅
    立即注册,领取新人大礼包
    • 联系我们
    • 24小时售后:4006784567
    • 24小时TEL :0668-2555666
    • 售前咨询TEL:400-678-4567

    • 官方微信

      官方微信
    Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
    增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
    免费拨打  400-678-4567
    免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
    微信公众号
    返回顶部
    返回顶部 返回顶部