首页 / MYSQL / mysql-4 数据页结构
mysql-4 数据页结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-4 数据页结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3462字,纯文字阅读大概需要5分钟。
内容图文
![mysql-4 数据页结构](/upload/InfoBanner/zyjiaocheng/912/cf88e41336334384bd79aa41025d27b8.jpg)
第4篇笔记~
上一篇是一行数据的结构,这篇是MySQL和内存交互的页结构整理,学习参考小孩子的《MySQL是怎样运行的:从根儿上理解MySQL》
数据页结构的快速浏览
数据页的存储空间大致被划分成了7个部分,
* File Header,文件头部,占38字节,页的一些通用信息
* Page Header,页面头部,56字节,数据页专有的一些信息
* Infimum+Supremum,最小记录和最大记录,26字节,两个虚拟的行记录
* User Records,用户记录,实际存储的行记录内容
* Free Space,空闲空间,页中尚未使用的空间
* Page Directory 页面目录,页中的某些记录的相对位置
* File Trailer 文件尾部,8字节,检验页是否完整
页中记录的存储
在一开始生成页的时候,其实并没有User Records
,每当插入一条记录,都会从Free Space
申请一个记录大小的空间划分过来,当空间全部被User Records替代后,就意味着这个页使用完了,再有新记录插入就需要申请新的页。
记录之间的关系
当前记录里的next_record是当前记录的真实数据导下一条记录真实数据的地址偏移量。
记录按照主键从小到大的顺序形成一个单链表,指针指向下一条记录的头信息和真实数据的中间位置,最小记录(伪记录)指向本页中主键值最小的用户记录,本页中主键值最大的用户记录的下一条记录是最大记录(Supremum)
删除记录时,会把当前记录的delete_mark标记,再次插入同样主键值
的记录时,会重用这部分空间。
Page Director 页目录
制作过程:
1.将所有正常记录划分为几个组;
2.每个组的最后一条记录(即组内最大的那条记录)的头信息中的n_owned属性表示该记录拥有的记录条数
3.将最大记录的地址偏移量提取出来按顺序存储到靠近页尾部的地方,即页目录
,页面目录中的这些地址偏移量被称为槽
,页面目录就是由槽组成。
注意点:
对于每个分组中的记录条数有规定:最小记录所在的分组只能有1条记录,最大记录所在的分组拥有的记录条数在1~8条之间,剩下的分组中记录条数在4~8条之间;
添加一条记录的步骤
初始情况下一个数据页里只有最小记录和最大记录,分属于两个分组;
之后每插入一条数据,都会从页目录中找到主键值比本记录的主键值大并且差值最小的槽,然后把该槽的n_owned值+1,直到该组中的记录数等于8个。
在一个组中的记录数等于8个后再插入一条记录时,会将组中的记录拆分成两个组,一个组4条,另一个5条。这个过程会在页目录中新增一个槽来记录这个新增分组中最大的那条记录的偏移量。
查找一条记录的过程
- 通过二分法确定该记录所在的槽,并找到该槽中主键值最小的那条记录,(槽是挨着的,找上一个槽的最大记录,接下来就是该槽的最小值)
- 通过记录的next_record属性遍历该槽所在的组中的各个记录。
Page Header 页面头部
一个数据页中存储的记录的状态信息,是页结构的第2部分,占用固定的56个字节,专门存储各种状态信息:如页目录中的槽数量、该页中的记录数量、已删除记录占用的字节数等
- PAGE_DIRECTION 假如新插入的一条记录的主键值比上一条记录的主键值大,表示这条记录的插入方向是右边,反之是左边。这个字段表示插入的方向
PAGE_N_DIRECTION
表示沿着同一个方向插入记录的条数,如果最后一条记录的插入方向改变,这个状态的值会被清零
File Header 文件头部
这部分是各个不同类型的页的通用部分,描述了各种页都通用的一些信息,如页的编号、上一个页、下一个页等。占用固定的38个字节。
!file header
FIL_PAGE_SPACE_OR_CHKSUM
代表当前页面的校验和(长字符串用某种算法来计算一个比较短的值来代表)FIL_PAGE_OFFSET
单独的页号FIL_PAGE_TYPE
当前页的类型,如FIL_PAGE_INDEX
索引页即数据页等FIL_PAGE_PREV
和FIL_PAGE_NEXT
为了把分散到不连续页中关联起来。数据页类型是有这个属性,并不是所有的类型都有这些属性。
File Trailer
为了检测一个页是否完整(在把页数据同步到磁盘的过程中断电了的情况),在每个页的尾部加了这个File Trailer,这部分由8个字节组成,分2个部分。
前4个字节代表页的校验和,和File Header中的校验和相对应,因为File Header在页的前边,校验和会被首先同步到磁盘,当完全写完时,校验和也会被写到页的尾部,如果完全同步,则页的首部和尾部的校验和应该是一致的。
后4个字节代表页面被最后修改时对应的日志序列位置(LSN),也是为了校验页的完整性
推荐下
内容总结
以上是互联网集市为您收集整理的mysql-4 数据页结构全部内容,希望文章能够帮你解决mysql-4 数据页结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。