设为首页 加入收藏

TOP

InnoDB数据页结构(四)
2019-09-17 18:51:16 】 浏览:81
Tags:InnoDB 数据 结构
尾部,如果完全同步成功,则页的首部和尾部的校验和应该是一致的,反之意味着同步中间出了错;
  • 后四个字节代表日志序列位置(LSN)
    • 这个部分也是为了校验页的完整性的,可以先不用管这个属性。
  • 总结

    1. InnoDB为了不同的目的而设计了不同类型的页,用于存放我们记录的页也叫做`数据页`。
    2. 一个数据页可以被分为7个部分,分别是
     - `File Header`,表示文件头,占固定的38字节。
     - `Page Header`,表示页里的一些状态信息,占固定的56个字节。
     - `Infimum + Supremum`,两个虚拟的伪记录,分别表示页中的最小和最大记录,占固定的`26`个字节。
     - `User Records`:真实存储我们插入的记录的部分,大小不固定。
     - `Free Space`:页中尚未使用的部分,大小不确定。
     - `Page Directory`:页中的记录相对位置,也就是各个槽在页面中的地址偏移量,大小不固定,插入的记录越多,这个部分占用的空间越多。
    1. 每个记录的头信息中都有一个next_record属性,从而使页中的所有记录串联成一个单向链表
    2. InnoDB会为把页中的记录划分为若干个组,每个组的最后一个记录的地址偏移量作为一个,存放在Page Directory中,所以在一个页中根据主键查找记录是非常快的,分为两步:
      • 通过二分法确定该记录所在的槽。
      • 通过记录的next_record属性组成的链表遍历查找该槽中的各个记录。
    3. 每个数据页的File Header部分都有上一个和下一个页的编号,所以所有的数据页会组成一个双链表
    4. 为保证从内存中同步到磁盘的页的完整性,在页的首部和尾部都会存储页中数据的校验和和LSN值,如果首部和尾部的校验和和LSN值校验不成功的话,就说明同步过程出现了问题。

    最后

    ? 本文的大部分内容都是参考并使用的原文中的内容,只是在中间加入了一些自己的理解,并希望把它更清楚的表达出来,大家也可以去看看原文:

    ? InnoDB数据页结构

    ? 如果有地方理解的不对,还望指教。

    首页 上一页 1 2 3 4 下一页 尾页 4/4/4
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇MySQL学习——标识符语法和命名规.. 下一篇源码安装MySQL

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目