innoDB储存

从大到小的结构为:表空间、段、区、页、行。

https://tva1.sinaimg.cn/large/007S8ZIlly1gizdp6956wj30nq0fjwgi.jpg

表空间

  • 表空间作为存储结构的最高层,所有数据都存放在表空间中,默认情况下用一个共享表空间 。

  • 表空间由各个段构成,InnoDB存储引擎由索引组织的,而索引中的叶子节点用来记录数据,存储在数据段,而非叶子节点用来构建索引,存储在索引段。

  • 区是由连续的页组成,任何情况下一个区都是 1MB

  • 一个区中可以有多个页,每个页默认为 16KB ,所以默认情况下一个区中可以包含64个连续的页
  • 页中存储的是具体的行记录。一行记录最终以二进制的方式存储在文件里

数据页内容

https://tva1.sinaimg.cn/large/007S8ZIlly1gizdp4rmaoj30no0eemzk.jpg

slot

  • 一个 slot 包含多个行记录。每个 slot 占 2 个字节,记录这个 slot 里的行记录相对页初始位置的偏移量
  • 索引只能定位到数据页,而定位到数据页内的行记录还需要在内存中进行二分查找,而这个二分查找就需要借助 slot 信息,先找到对应的 slot ,然后在 slot 内部通过数据行中记录头里的下一个记录地址进行遍历。链表本身是无法进行二分查找

https://tva1.sinaimg.cn/large/007S8ZIlly1gizdp9ere1j30l30duwgx.jpg