持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
前言
上篇我们学习了MySQL中的InnoDB的索引。有兴趣的小伙伴可以阅读(MySQL学习-InnoDB中的索引(三))。
下面我们继续学习MySQL中的InnoDB的索引。
InnoDB中的索引
迭代二次索引
上一节学习了迭代一次后的索引,这次我们再次进行二次迭代。迭代一次时是将所有的目录项放在一页里面。但是这个页容量假设是有限的,假如再次新增数据,新的页目录项需要一个新的页来存储。这时就有了2个新的数据页。
- 为存储新的数据新生成了页3。
- 因为原先存储目录项记录的页2的容量已满,所有需要一个新的页4来放对应页3的目录项。
因为存储目录项的页不止一个,所有如果我们想根据主键值查找一条用户记录大致需要3个步骤,以查找主键值为1的记录为例:
- 确定目录记录页,目前存储目录项记录的页有2个,分别是页2和页4,又因为页2表示的记录项的主键值范围是1-30,页4表示的目录项的主键值不小于30,所以主键值为1的记录对应的目录项记录在页2中。
- 通过目录项记录页确定记录真实存在的页,即页1。在一个存储目录项的页中通过主键值定位一条目录项记录的方式上一节已学习。
- 在真实存储记录的页中定位具体的记录。
迭代三次的索引
迭代二次的索引基础上,我们生成一个更高级的目录项页5,这个页中的两条记录,分别记录页2和页4,如果记录的主键值在1-30之间,则到页2中查找更详细的目录项记录,如果主键值不小于30的话,就到页4中查找更详细的目录项记录。这样生成的数据结果,它的名称是B+树。
今天先学习到这里,明天继续。