InnoDB原理
crud
的时候,都会从磁盘上加载数据页到Buffer Pool
的缓存页里去,更新缓存页后,由异步线程刷回磁盘的数据页。
所以MySQL
进行数据操作的最小单位是数据页,接下来就分析分析,数据页到底长什么样。
每个数据页默认16kb
的大小,数据页由多个部分组成
文件头:存放了特别多的信息,如当前页号、页类型、所属表空间、上一页号、下一页号等等。
数据页目录:数据页目录存储的内容就是主键ID
和行位置。
空闲空间:
其实数据页还未写入数据时,是没有数据行的,只有空闲空间,一旦写入,空闲空间会减少一些,直到空闲空间耗尽
双向链表:
所以数据页是通过上下页号,组成双向链表
数据页内部会存储一行一行的数据,每一行数据都会按照主键大小进行排序存储,同时每一行数据都有指针指向下一行数据,组成单向链表。
数据页目录
索引页:
索引页,顾名思义,就是存储索引信息的数据页,在数据页的文件头部,有页类型来进行区分。
索引页会存储两类内容,一类是最小主键值与索引页号,另一类是最小主键值与数据页号。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验