首页 > 数据库 > MySQL > 正文

MySQL内InnoDB数据页的原理是什么

2024-07-24 12:33:40
字体:
来源:转载
供稿:网友
  MySQL中InnoDB数据页的原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
 
  数据页结构的快速浏览
  数据页代表的这块16KB大小的存储空间可以被划分为多个部分,不同部分有不同的功能,各个部分如图所示:
 
  一个InnoDB数据页的存储空间大致被划分成了7个部分,有的部分占用的字节数是确定的,有的部分占用的字节数是不确定的。下边我们用表格的方式来大致描述一下这7个部分都存储一些啥内容(快速的瞅一眼就行了,后边会详细唠叨的):
 
  名称 中文名 占用空间大小 简单描述
  File Header 文件头部 38字节 页的一些通用信息
  Page Header 页面头部 56字节 数据页专有的一些信息
  Infimum + Supremum 最小记录和最大记录 26字节 两个虚拟的行记录
  User Records 用户记录 不确定 实际存储的行记录内容
  Free Space 空闲空间 不确定 页中尚未使用的空间
  Page Directory 页面目录 不确定 页中的某些记录的相对位置
  File Trailer 文件尾部 8字节 校验页是否完整
  记录在页中的存储
 
  在页的7个组成部分中,我们自己存储的记录会按照我们指定的行格式存储到User Records部分。但是在一开始生成页的时候,其实并没有User Records这个部分,每当我们插入一条记录,都会从Free Space部分,也就是尚未使用的存储空间中申请一个记录大小的空间划分到User Records部分,当Free Space部分的空间全部被User Records部分替代掉之后,也就意味着这个页使用完了,如果还有新的记录插入的话,就需要去申请新的页了,这个过程的图示如下:
  
  为了更好的管理在User Records中的这些记录,InnoDB可费了一番力气呢,在哪费力气了呢?不就是把记录按照指定的行格式一条一条摆在User Records部分么?其实这话还得从记录行格式的记录头信息中说起。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表