一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的渐进复杂度。换句话说,索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数。

一个磁盘由大小相同且同轴的圆形盘片组成,磁盘可以转动(各个磁盘必须同步转动)。在磁盘的一侧有磁头支架,磁头支架固定了一组磁头,每个磁头负责存取一个磁盘的内容。磁头不能转动,但是可以沿磁盘半径方向运动(实际是斜切向运动),每个磁头同一时刻也必须是同轴的,即从正上方向下看,所有磁头任何时候都是重叠的(不过目前已经有多磁头独立技术,可不受此限制)。

磁盘结构

磁盘的操作:

寻道:读写头连接到一个传动臂的一端。通过沿着半径轴前后移动传动臂,驱动器可以将读写头定位到任何磁道上(盘片不动,磁头动)

旋转:一旦定位到磁道后,盘片转动,磁道上的每个位经过磁头时,读写磁头就可以感知到位的值,也可以修改值(磁头不动,盘片动)

磁盘的存储概念:

扇区:每个同心环叫做一个扇区,扇区是磁盘的最小存储单元。当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。为了读取这个扇区的数据,需要将磁头放到这个扇区上方,为了实现这一点,磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间;然后磁盘旋转将目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间。

页:由于存储介质的特性,磁盘本身存取就比主存慢很多,再加上机械运动耗费,磁盘的存取速度往往是主存的几百分分之一,因此为了提高效率,要尽量减少磁盘I/O。为了达到这个目的,磁盘往往不是严格按需读取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据放入内存。预读可以提高I/O效率。预读的长度一般为页(page:计算机管理存储器的逻辑块-通常为4k)的整倍数. 主存和磁盘以页为单位交换数据。当程序要读取的数据不在主存中时,会触发一个缺页异常,此时系统会向磁盘发出读盘信号,磁盘会找到数据的起始位置并向后连续读取一页或几页载入内存中。

局部性原理

这样做的理论依据是计算机科学中著名的局部性原理:

当一个数据被用到时,其附近的数据也通常会马上被使用。

也就是说,程序运行期间所需要的数据通常比较集中。由于磁盘顺序读取的效率很高(不需要寻道时间,只需很少的旋转时间),因此对于具有局部性的程序来说,预读可以提高I/O效率。

文件系统及数据库系统的设计者利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入。为了达到这个目的,在B+Tree每次新建一个节点的同时,直接申请一个页的空间,这样就保证一个节点物理上也存储在一个页里,加之计算机存储分配都是按页对齐的,就实现了一个node只需一次I/O。

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

mysql的索引文件_MySQL:索引在磁盘上的存储相关推荐

  1. mysql字符串索引原理_Mysql索引介绍和原理

    索引的介绍 索引是什么? 官方介绍索引是帮助msyql搞笑获取数据的数据结构.更通俗一点的说:数据库索引好比是一本书前面的目录,能加快数据库的查询速度.优点是:方便查找--检索,索引查询内容--覆盖索 ...

  2. mysql设置id值为索引值_MySQL 索引

    一.索引作用 提供了类似于书中目录的作用,目的是为了优化查询 (一).索引种类 1.B树索引(Balance Tree) 作用 Btree的设计理念,就是让查询能够快速锁定范围,特别适合于范围查询. ...

  3. 数据库原理及应用(索引为什么快,数据在磁盘上如何存储)

    引子: 1.数据库有三级模式. 2.物理独立性:数据在磁盘上存储. 3.逻辑独立性:表的逻辑设计. 4.两级映射,表的逻辑不会其物理存储逻辑. 5.视图层:dba给用户展示的部分内容. 一  数据模型 ...

  4. 操作系统之文件管理:2、文件的逻辑结构(有结构文件、无结构文件、顺序文件、索引文件、索引顺序文件)

    2.文件的逻辑结构 思维导图 逻辑结构VS物理结构 文件的逻辑结果分类 1.无结构文件 2.有结构文件 按照记录的长度来分: 按照逻辑结构来分: 1.顺序文件 问题:能否实现随机存取? 2.索引文件 ...

  5. 服务器的回收站在哪个文件夹,Windows系统回收站的文件保存在哪个磁盘上

    据网络调查发现,有很多网友都只知道回收站是装一些已经删除的文件或在图片信息.防止一些用户误删除操作就可以从新在回收站在找回那些文件.但是大部分用户都还不知道回收站的文件保存在哪个磁盘上?那到底Wind ...

  6. 逍遥模拟器拷贝android根目录文件,逍遥安卓模拟器怎样将已安装的镜像文件转移到别的磁盘上...

    软件安装:装机软件必备包             装机软件必备包官方下载 关于电脑装机必须的软件,比如windows office系列办公软件.网页浏览器.杀毒软件.安全防护软件.刻录软件.压缩软件. ...

  7. mysql索引 物理文件_MySQL索引详解

    1.前言 MySQL数据库管理系统本身就是一个文件管理系统,虽然它的实现方式确实比较复杂,但本质上是要通过访问磁盘才能完成数据的存储与检索.所以如果我们想要进一步了解MySQL索引的的话,磁盘相关的操 ...

  8. mysql多索引结构_MySQL 索引结构

    谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...

  9. mysql 索引语法_MySQL 索引:语法及案例剖析

    MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索 ...

最新文章

  1. js中propertyIsEnumerable()方法使用介绍
  2. DSP程序中段的定义和作用
  3. 阿里云物模型层功能分析
  4. Python09 字典
  5. python复制多个文件_python 之 复制多个模板文件
  6. 《大话软件工程—需求分析与软件设计》,给出了分析与设计过程中需要的理论、方法、工具和标准
  7. C#后台调用oracle存储过程,参数传入的是clob字段,怎样处理
  8. SqlBulkCopy批量数据导入(EF实现)
  9. 学习笔记_vnpy实战培训day01
  10. java后端开发(九):mybatis的威力加强版之mybatis-plus
  11. 2020形式化方法复习笔记
  12. Mybatis配置文件http://mybatis.org/dtd/mybatis-3-config.dtd报错
  13. DSP视频教程第2期:系统介绍ARM DSP数字信号处理库以及超简单的移植方法分享(2022-01-27)
  14. 输出月份英文名java_输出月份英文名 (30 分)
  15. 520浪漫代码流星雨
  16. 别笑话爬虫工程师了,数仓库工程师也被警察传话了。
  17. 设计模式 | 为什么要学设计模式?懂兵法才能当好将军
  18. ubuntu下android开发安装手机驱动
  19. MySql 获取文件后缀名
  20. Docker 配置 MySQL

热门文章

  1. 曲柄手柄行业调研报告 - 市场现状分析与发展前景预测
  2. 性能与可靠性:Java应用为何像一级方程式赛车
  3. 【English】音标集训
  4. 11 Java基础整合---从配置环境变量到完成学生管理系统
  5. VirtualBox至强
  6. “魔鬼交易员”不过是赌徒
  7. 财务专业简历 计算机水平,财会专业的人怎么写简历?这么写通过率80%以上
  8. 【高等数学】基础知识点梳理(张宇2024版)
  9. 技术交流:接元宝小游戏(JQ转JS并解决游戏过程问题)
  10. c语言output函数的用法,fprintf fscanf等函数的用法