美文网首页
数据结构系列11——线性索引

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

作者: kl_w | 来源:发表于2018-06-20 22:36 被阅读9次

linear index

基本思路

(1)索引文件

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

(2)优点:

访问变长的数据库记录

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

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

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

(4)缺点:

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

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

(5)缺点解决办法

使用二级线性索引


接下来介绍二级线性索引

(1)索引文件

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

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

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

举例

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

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

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

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

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

举例


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

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


相关文章

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

    linear index 基本思路 (1)索引文件 一组简单的(key, pointer)对的序列,并且按照关键码...

  • Mysql索引相关

    此文章主要回答以下问题:1 、索引数据结构演变2 、mysql索引数据结构 mysql索引的演变 线性结构:首先不...

  • 查找算法 关于索引

    大话数据结构中介绍了三个索引 稠密索引 分块索引 倒排索引 1.稠密索引 稠密索引指的是在线性索引中,将数据集中的...

  • 基本数据结构底层原理和总结

    基本数据结构解析 逻辑结构分为:集合,线性,树,图。存储结构分为:线性存储,链式存储,索引存储,has存储。 数组...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 线性表 - Sequential List

    0 序言1 简析线性表2 记录线性表的使用 序言 基本数据结构记录系列,记录基本的数据结构实现和JDK、SDK等中...

  • 005.python基础语法之内置数据结构列表

    简介 列表这一数据结构最常用 特性: 有顺序,可以使用索引(从0开始); 元素可以使任意对象; 是线性的数据结构;...

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • C#之数据结构(上)

    数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构有: 线性表、栈、队列、串、数组...

  • py基础

    5Python集合容器 数据结构数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构...

网友评论

      本文标题:数据结构系列11——线性索引

      本文链接:https://www.haomeiwen.com/subject/frchdftx.html