前面我们说到了,为了方便管理区,区又分为free碎片空闲区,free_frag有剩余页的碎片空闲区,full_frag无剩余页的碎片空闲区,fseg附属于某个段的整个区。

当存入数据时候不是在遍历,而是先从free_frag的extent descriptor entry ,简称xdes Entry的链表是否为空,空的话则从free的xdes entry链表申请新的碎片区,升级到free_frag,修改state状态,每个里面有一个特定的segmentId。

Fseg分了区分出某个段的区,里面又分为free的xdes entry链表,not_free的xdes entry链表,及其full的xdes entry区,当出现32个完整碎片区时候,就会先判断当前段的not free链表是否为空。

一个索引分为叶子节点段,和非叶子节点段,一个段又有三个xdes entry链表,所以2个索引又4个段,12个链表,表直属空间结构也有三个extend descriptor enrty链表,所以一共15个xdes entry。

区的分类&XDES Entry(3)---独立表空间结构(二十九)

段的结构

我们都知道段包含零碎的页面又包含完整的区组成。每个区都又xdes entry来记录区的属性位子,mysql为了记录段的属性,就设计了INODE entry来记录。

  1. segmentId:8个字节,段唯一的id编号。
  2. not_full_n_used:4个字节,这个字段表示在not_full链表中已经使用多少个页面。
  3. 三个list_base_node:分别记录了三个段链表,free链表(16个字节),not_full链表(16个字节),full链表(16个字节)。
  4. Magic Number:4个字节,用来标记inode entry是否被初始化,(初始化:吧各个字段的值都填进去)。规定了,当这个字段的值是97937874,则被初始化,否则没有被初始化。
  5. Fragment Array Entry:这里是一些零散页面和一些完整区的集合,每个fragment array entry都对应着一个零散页面。

到目前为止,我们已经清楚了表空间,区段,xdes entry,inode entry等链表的基本概念,那每个区对应的xdes entry到底存在表空间什么地方?直属于表空的free,free_frag,full_frag链表又存在什么地方?每个段的inode entry又存在表空间的什么地方?我们前面说了一个页16kb,64个页为一个区,256个区为一个组,别急,接下来从页慢慢分析。

FSP_HDR类型

首先看第一组的第一个页面,页号为0,extent0,当然也是表空间的第一个页面,页面类型是FSP_HDR,存储着表空间内的一些整体属性和第一组内256个区对应的xdes entry结构。

一个完整的FSP_HDR类型页面大致由五个部分组成:

  1. file_header:38个字节,页的一些通用信息。
  2. file_space_header:112个字节,表空间的一些整体属性信息。
  3. xdes_entry:10240字节,存储本组256个区对应的属性信息。
  4. entry_space:5986字节,用于页结构的填充,没啥实际意义。
  5. file trailer:8个字节,效验是否完整。

段的结构 (4)---独立表空间结构(三十)相关推荐

  1. 《Mysql是怎样运行的》读书笔记之独立表空间结构

    目录 数据目录 表空间 数据目录 mysql的数据目录是用来存储MySQL运行过程中产生的数据. 数据目录对应一个系统变量datadir.查看这个系统变量就可以了. SHOW VARIABLES LI ...

  2. InnoDB 独立表空间结构

    文章目录 区 区(extent)的概念 区的 4 种状态 XDES Entry 段 段的概念 INODE Entry 区 区(extent)的概念 对于 16KB 的页来说,连续的 64 个页就是一个 ...

  3. FreeSql (三十四)CodeFirst 迁移说明

    FreeSql 支持 CodeFirst 迁移结构至数据库,这应该是(O/RM)必须标配的一个功能. 与其他(O/RM)不同FreeSql支持更多的数据库特性,而不只是支持基础的数据类型,这既是优点也 ...

  4. FreeSql (三十五)CodeFirst 自定义特性

    比如项目内已经使用了其它 orm,如 efcore,这样意味着实体中可能存在 [Key],但它与 FreeSql [Column(IsPrimary = true] 不同. Q: FreeSql 实体 ...

  5. FreeSql (三十二)Aop

    FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...

  6. FreeSql (三十)读写分离

    FreeSql 支持数据库读写分离,本功能是客户端的读写分离行为,数据库服务器该怎么配置仍然那样配置,不受本功能影响,为了方便描术后面讲到的[读写分离]都是指客户端的功能支持. 各种数据库的读写方案不 ...

  7. NLP(三十六)使用keras-bert实现文本多标签分类任务

      本文将会介绍如何使用keras-bert实现文本多标签分类任务,其中对BERT进行微调. 项目结构   本项目的项目结构如下: 其中依赖的Python第三方模块如下: pandas==0.23.4 ...

  8. Mysql 学习(七)独立表结构存储 二

    段的结构 上一节说过表空间分为各个段,每个段里面又是以区为单位,每个区则有64个页.区根据剩余存储空间分为:Free,FREE_FRAG,FULL_FRAG 三种类型,为了方便管理区,给每个区创建XD ...

  9. 实验4 基于预测分析表法的语法分析程序_第三十届 脑功能磁共振数据处理分析培训班...

    北京赛博尔医药科技有限公司(www.cibrmed.com)将于2019年 7月6日 至 2019年7月11日(周六至下周四)举办第三十届脑功能磁共振数据处理分析培训班(课程内容详见课表安排).欢迎大 ...

最新文章

  1. 99_leetcode_Best Time to Buy and sell Stock
  2. python在哪里写代码比较适合-适合练习的10个Python项目,每个项目都不到500行代码...
  3. 如何使用Spring管理Filter和Servlet
  4. redis安装(linux)
  5. 我的网站被黑了,关键词被劫持,总结一下是怎么解决的。
  6. AtCoder Grand Contest 025 B - RGB Coloring
  7. Python批处理MODIS数据并计算NDVI
  8. 简析通达信股票接口测试过程
  9. 前端原生开发解决方案
  10. wincc逻辑运算符_wincc逻辑运算符_wincc中表达式及公式
  11. 应用宝上架审核要求_应用宝应用市场APP上架首发申请
  12. 计算机发展趋势 网络化,计算机的发展趋势表现在多极化网络化等几个方面
  13. 从高中编码员到国际技术演讲者— Arun Michael Dsouza访谈
  14. 以YOLOv5为基准实现布匹缺陷检测(Fabric Defect Detection)
  15. [病毒分析]熊猫烧香
  16. Activiti多人会签的实现 Activiti
  17. python程序中如何合理处理[WinError 5]拒绝访问的错误
  18. php nbl2,NBL二年级新军杀入总决赛 虽败犹荣已创造历史
  19. 关于嵌套滚动机制的一点思索
  20. 四个模型与指标体系的建立

热门文章

  1. [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!
  2. Linux操作系统的诞生与其对现代信息世界的影响
  3. 2016年网页设计的5个风向标
  4. 云原生向量数据库Milvus(二)-数据与索引的处理流程、索引类型及Schema
  5. html fck编辑器,HTML编辑器FCKeditor使用详解
  6. 2048小程序源码(html网页小游戏)
  7. oracle over() 函数使用
  8. MHA编写实现VIP漂移
  9. 博客园迎新春对联大赛 -[已圆满结束]
  10. 两步实现微信小程序分享朋友圈