上篇文章讨论了单行数据如何存储的问题,实际应用过程中,不可能只有单条数据。那多条数据又该如何存储呢?

一,自定义存储结构

1. 数组

  • 优点
  • 缺点

    2. HASH表

  • 优点

  • 缺点

    3. 链表

  • 优点

  • 缺点

    二,MySql的页结构

    1. 页的概念

    2. 页的结构

    页结构.png

    3. 页的记录结构

    记录结构.png

    下一条记录指得并不是按照我们插入顺序的下一条记录,而是按照主键值由小到大的顺序的下一条记录。而且规定 Infimum记录(也就是最小记录) 的下一条记录就是本页中主键值最小的用户记录,而本页中主键值最大的用户记录的下一条记录就是 Supremum记录(也就是最大记录)

4.Page Dictionary

记录结构.png
单页记录查找的解决方案:

  1. 通过二分法确定该记录所在的槽,并找到该槽所在分组中主键值最小的那条记录。
  2. 通过记录的next_record属性遍历该槽所在的组中的各个记录。

三,InnoDB的索引方案

innodb的索引方案.png

这些页是如何产生的?

四,参考资料