高性能索引讲解——第四课(未完待续)

DBC 1.6K 0

一、索引是什么?

  • 索引的概念:索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度
  • 索引的作用:索引的目的在于提高查询效率,使原始的随机全表扫描变成快速顺序锁定数据
  • 常用索引的分类:
    • 普通索引:这是最基本的索引,它没有任何限制
    • 唯一索引:引列的值必须唯一,但允许有空值(注意和主键不同)
    • 组合索引:多个数据列组成的索引,遵守最左匹配原则
  • 索引高性能保证:
    • 把查询过程中的随机事件变成顺序事件
    • 数据保存在磁盘上,而为了提高性能,每次又可以把部分数据读入内存来计算,访问磁盘的成本大概是访问内存的十万倍左右
    • 磁盘IO与预读
      • 考虑到磁盘IO是非常高昂的操作,计算机操作系统做了一些优化,当一次IO时,不光把当前磁盘地址的数据,而是把相邻的数据也都读取到内存缓冲区内,因为局部预读性原理告诉我们,当计算机访问一个地址的数据的时候,与其相邻的数据也会很快被访问到。每一次IO读取的数据我们称之为一页(page)。具体一页有多大数据跟操作系统有关,一般为4k或8k
  • 扩展话题:为什么磁盘读取数据很慢:
    • 与主存不同,磁盘I/O存在机械运动耗费,因此磁盘I/O的时间消耗是巨大的
    • 磁盘读取时间 = 寻道时间 + 旋转时间 + 传输时间
    • 当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。为了读取这个扇区的数据,需要将磁头放到这个扇区上方,为了实现这一点,磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间,然后磁盘旋转将目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间

    高性能索引讲解——第四课(未完待续)插图

 

高性能索引讲解——第四课(未完待续)插图2

二、

发表评论 取消回复
表情 图片 链接 代码

分享