mysql-innodb的表空间

独立表空间

表空间中存储着承载数据的页,对于16kb的页来说,64个页组成一个区(extent),也就是默认一个区1M,每256个区划分为1组

区的概念是用来管理页的,目的是让在同一个区的页尽量在物理介质上离得近,一个区在物理上就是连在一起的64个页,以提高io查找效率,当数据多的时候会直接分配一个区或者几个区

一个索引会产生两个段,一个用来存储非叶子节点区 一个存储叶子节点区,段是以区为单位申请的空间

XDES Entry记录着对应区的属性

 

  segment Id:当区归属于某个段时 segment Id 代表哪个段的id 不归属与段时 没值

  state: 区的状态FREE(空闲的区)、FREE_FRAG(部分空闲的区)、FULL_FRAG(满的区)和FSEG(归属于某个段的区)

  page state bitmap: 16字节 128位 64个页一个区,每两bit代表一个页的空闲状态第一位表示是否空闲

 

  表空间由若干个区组成,每个区对应一个XDES Entry结构,直属于表空间的区有三个链表,分别是free free_frag full_rag状态的链表

  直属于段的区有三个链表,分别是free free_frag full_rag状态的链表

  每个链表都对应一个List Base Node结构记录了链表的头 链表的尾 链表包含的节点数量 以便我们找到对应的链表

posted @   rudynan  阅读(92)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示