前言
一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储到磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的渐进复杂度。 换句话说,索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数。
一.内存读取
简单点说说内存读取,内存是由一系列的存储单元组成的,每个存储单元存储固定大小的数据,且有一个唯一地址。当需要读内存时,将地址信号放到地址总线上传给内存,内存解析信号并定位到存储单元,然后把该存储单元上的数据放到数据总线上,回传。
写内存时,系统将要写入的数据和单元地址分别放到数据总线和地址总线上,内存读取两个总线的内容,做相应的写操作。
内存存取效率,跟次数有关,先读取A数据还是后读取A数据不会影响存取效率。
二.磁盘读取
磁盘读取先后顺序会极大的影响读取效率。磁盘I/O涉及机械操作。这里有一篇非常详细的文章介绍磁盘结构简单理解磁盘结构
磁盘的结构
- 盘片:磁盘有多个盘片,每个盘片有正反两