MySQL通过B+树来实现索引。
索引
索引查找过程中,产生磁盘I/O消耗,而I/O速度相当之慢换句话说,索引的机构组织要尽量减少查找过程中磁盘I/O的存取次数,减少磁盘IO的次数能很大程度的提高MySQL性能。页从磁盘读取数据时,系统会将逻辑地址发给磁盘,磁盘将逻辑地址转换为物理地址-哪个磁道,哪个扇区。磁头进行进行机械运动,先找到相应磁道,再找该磁道的对应扇区,扇区是磁盘的最小存储单元。主存和磁盘以页为单位交换数据,通常为4KB大小。需要查找key为6的数据
1. 将磁盘块0加载到内存,发生一次IO,在内存中用二分查找确定6在3和9之间;2. 通过指针P2的磁盘地址,将磁盘2加载到内存,发生第二次IO,再在内存中进行二分查找找到6,结束3. 这里只进行了两次IO,实际上,每个页块大小为4K,3层的B+树就可以表示上百万的数据,也就是每次查找最多3次IO,所以索引对性能的提高将是巨大的