Reverse Key Indexes反向索引
Reverse Key Indexes反向索引
A reverse key index is a type of B-tree index that physically reverses the bytes of each index key
while keeping the column order.
反向索引就是将正常的键值头尾调换后再进行存储,这样做可以高效地打散正常的索引键值在索引叶块中的分布位置.
反向索引适用场合:索引叶块成为热点块时使用通常使用数据时都比较集中在一个连续的数据范围内,比如批量插入操作,在使用正常的索引时就很容易发生索引叶子块过热的现象,严重时会导致系统性能下降.
为什么是最右端的leaf block?
在普通的B树索引中,数据库按顺序插入索引值,如果索引键值被同时插入到B树的叶块,那叶块可能会成为一个序列化点.比如,你创建了具有以下值的主键(从序列取值):
1 0 1
1 0 2
1 0 3
在普通的B树索引中,这些顺序的索引值都存储在最右侧的同一索引块中,这种存储方式加剧了对该块的争用.
在反向索引中,Oracle 数据库将以下方式插入相同的值:
1 0 1
2 0 1
3 0 1
从上可以看出,主键的实际值是连续排列的,但索引值却不是连续排列的.
使用反向索引的优点:降低索引叶子块的争用,减少热点块,提高系统性能.
使用反向索引的缺点:由于反向索引结构自身的特点,如果系统中经常使用范围扫描进行读取数据的话,如在where 子句中使用between and 语句或比较运算符>,<等,反向索引将不适用,此时会出现大量的全表扫描的现象,反而会降低系统的性能.
Reverse Key Indexes反向索引的更多相关文章
- Oracle索引梳理系列(三)- Oracle索引种类之反向索引
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- Mapreduce 反向索引
反向索引主要用于全文搜索,就是形成一个word url这样的结构 file1: MapReduce is simple file2: MapReduce is powerful is simple f ...
- Oracle 反向索引(反转建索引) 理解
一 反向索引 1.1 反向索引的定义 反向索引作为B-tree索引的一个分支,主要是在创建索引时,针对索引列的索引键值进行字节反转,进而实现分散存放到不同叶子节点块的目的. 1.2 反向索引针对的问题 ...
- Oracle 反键索引/反向索引
反键索引又叫反向索引,不是用来加速数据访问的,而是为了均衡IO,解决热块而设计的比如数据这样: 1000001 1000002 1000005 1000006 在普通索引中会出现在一个叶子上,如果部门 ...
- 【转】Lucene工作原理——反向索引
原文链接: http://my.oschina.net/wangfree/blog/77045 倒排索引 倒排索引(反向索引) 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项 ...
- 反向索引(Inverted Index)
转自:http://zhangyu8374.iteye.com/blog/86307 反向索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射.反向索引通常利用关联数组实现. ...
- reverse(两种反向生成url django原生形式和rest_framework中版本的形式)
reverse(两种反向生成url django原生形式和rest_framework中版本的形式) views.py from django.shortcuts import render,Http ...
- lucene反向索引——倒排表无论是文档号及词频,还是位置信息,都是以跳跃表的结构存在的
转自:http://www.cnblogs.com/forfuture1978/archive/2010/02/02/1661436.html 4.2. 反向信息 反向信息是索引文件的核心,也即反向索 ...
- Elastic Search 学习之路(二)——inverted index(反向索引)
这是篇翻译文,图画的挺有意思. Elastic使用非常特殊的数据结构,称作反向索引.反向索引中,包括了一组document中出现的唯一的单词,和对应的单词,所出现的位置.反向索引是在ES中,docum ...
随机推荐
- IOS 快速排序法
- (NSMutableArray *)QuickSort:(NSMutableArray *)list StartIndex:(NSInteger)startIndex EndIndex:(NSIn ...
- CMD下用csc.exe编译.cs 代码
用惯了VS来写C#代码,要是用记事本写会不会觉得很好玩,然后再CMD窗口下编译运行,当然写一些简单的Console代码还是可以这么玩玩的,如果你觉得打开VS太麻烦的话. 把后缀名改成.cs,test. ...
- win7系统64位安装oracle10g
win7系统64位安装oracle10g 下载地址: http://download.oracle.com/otn/nt/oracle10g/10204/10204_vista_w2k8_x64_pr ...
- github proxy
--set github proxy git config --global http.proxy http://user_name:user_pwd@user_ip:port git config ...
- lda模型的python实现
LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,最近看了点资料,准备使用python实现一下.至于数学模型相关知识,某度一大堆,这里也给出之前参考过的一个挺详细 ...
- C语言基础09
指向结构体变量的指针叫做结构体指针: typedef struct { int num; char name[30]; // char *name; 程序会崩溃,*name本身是指针,没有什么空 ...
- 利用VisualVM监测Azure云服务中的Java应用
在做Java开发的时候,我们需要在上线之前对程序进行压力测试,对程序的性能进行全面的监控,了解JVM的CPU,内存,GC,classes,线程等等信息,或者在程序上线运行的过程当中以便于诊断问题或者对 ...
- Android 控件属性
TextView 文字属性//文字左右居中android:layout_centerHorizontal="true"//文字垂直居中android:layout_centerVe ...
- logcat错误日志
http://www.crifan.com/android_log_to_file/ http://www.iteye.com/problems/85431 http://www.cnblogs.co ...
- openssl 加密
OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH, 但是,你不应该只将其作为一个库来使用,它还是一个多用途的.跨平台的密码工具.