B+tree是B-tree的一个变种,叶子节点存储了相邻节点的磁盘地址,双向指针,对于范围查找速度更快,每次从根节点进行查找,页节点分配的空间大小一般是16k,Show global status like ‘innodb_page_size’;执行该sql可以查看页空间大小,指针是下个叶子节点的地址,一个指针大小约占6b,一个bigint类型的字节占8b,那么一页16kb大约能放16kb*1024/(6+8)=1170个元素,三层大约能放千万级别数据量,根节点可能放在内存里面,其他节点放磁盘中,影响查找速度的指标树的高低,mysql最终选择使用B+tree是因为叶子节点不存在数据,从而每页存放的索引更多,减少了树的高度,加大了查找的速度,而B-Tree叶子节点和非叶子节点都存放数据,导致每页能够存放的索引很少,从而导致树的高度变大,增加了查找的次数,使查询速度变慢,同时B+tree的非叶子节点之间存在双向指针,因此mysql最终选择了B+tree来作为索引的数据结构;存储引擎是表级别的。