众人好,我是鱼皮。
在咱们的回忆中,mysql数据内外不过即是保存一行行的数据。跟个excel似的。
直接遍历这一行行数据,功能即是O(n),对比慢。为了加快查问,利用了B+树来做索引,将查问功能优化到了O(lg(n))。
但题目就来了,查问数据功能在lg(n)级其它数据机关有不少,好比redis的zset里用到的跳表,也是lg(n),而且完成还贼简朴。
那为甚么mysql的索引,不利用跳表呢?
咱们即日就来聊聊这个话题。
B+树的机关在这边,我简朴归纳下B+树的机关。
B+树查问进程如上图,寻常B+树是由多个页构成的多层级机关,每个页16Kb,关于主键索引来讲,最末级的叶子结点放行数据,非叶子结点放的则是索引讯息(主键id和页号),用于加快查问。
好比说咱们想要搜索行数据5。会先从顶层页的record们动手。record里包括了主键id和页号(页地点)。