##leaf blocks 为什么b+tree索引叶子块 叶块上有上双向链表?
为了避免由于范围查询扫描( 类似 < 10 ,>10 等谓词条件查询)导致的重复branch blocks 扫描浪费IO,增加查询延时,可以直接扫描leaf blocks 定位(leaf block 是逻辑上有序的,leaf block 中有pre block 块位置偏移,next block 块位置偏移 )
##如何理解b+tree 数据是按照主键顺序存储的?
一个block 中的数据是有序存储的(具体数据行存储不是物理上有序,不存在leaf block所在主键值范围外数据行),但是block 在物理文件上不是有序存储排放的,为了维护b+tree结构,通过block 中的pre和next 块指针来维护block 的(逻辑上)有序