数据结构系列11——线性索引

linear index


数据结构系列11——线性索引_第1张图片

基本思路

(1)索引文件

一组简单的(key, pointer)对的序列,并且按照关键码的顺序进行排序,指针指向存储在磁盘上文件记录起始位置,只要内存允许,索引存于内存能大幅提高检索速度

(2)优点:

访问变长的数据库记录

索引文件中记录定长、按关键码有序,可使用二分检索,效率高O(logn)

易于顺序处理数据(比较操作、批处理操作)

节省空间(相对其它索引结构)

(4)缺点:

        a)如果线性索引太大,存储在磁盘中,可能因多次访问磁盘影响检索效率

        b)在数据库中插删记录时必须更新线性索引,线性索引是顺序存储,插删需移动,代价巨大

(5)缺点解决办法

使用二级线性索引



接下来介绍二级线性索引

(1)索引文件

把key的值与对应的线性索引文件的磁盘块中第一条记录(从物理位置上看的第一条)的关键码的值相同

把pointer指向相应线性索引文件的磁盘块的起始位置

最终使每一条二级线性索引记录对应于一个一级线性索引文件的磁盘块

举例

磁盘块大小是1024B,每个(key, pointer)记录需要8个字节,则每个磁盘块可以存储128条这样的记录

假设线性索引文件中包含10000条记录,那么该一级线性索引文件占用79 (=80000/1024)个磁盘块,相应的二级线性索引文件中有79项记录(连1个磁盘块都用不完)

索引文件中关键码与相应磁盘块中第一条记录关键码值相同

指针指向相应磁盘块的起始位置

检索时,线性索引文件不被读入内存,二级线性索引文件被读入内存

举例


数据结构系列11——线性索引_第2张图片

检索关键码为2555的记录:二级索引找≤2555最大关键码所在记录2003;沿指针找线性索引文件的磁盘块读入内存;二分法找记录在磁盘上位置读入所需记录,完成检索

由于二级索引往往存储内存,通常只需要访问两次磁盘即可:一次读入一级线性索引文件中的某一个磁盘块,一次读入目标数据库记录


你可能感兴趣的:(数据结构系列11——线性索引)