段的结构 (4)---独立表空间结构(三十)
前面我们说到了,为了方便管理区,区又分为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来记录。
- segmentId:8个字节,段唯一的id编号。
- not_full_n_used:4个字节,这个字段表示在not_full链表中已经使用多少个页面。
- 三个list_base_node:分别记录了三个段链表,free链表(16个字节),not_full链表(16个字节),full链表(16个字节)。
- Magic Number:4个字节,用来标记inode entry是否被初始化,(初始化:吧各个字段的值都填进去)。规定了,当这个字段的值是97937874,则被初始化,否则没有被初始化。
- 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类型页面大致由五个部分组成:
- file_header:38个字节,页的一些通用信息。
- file_space_header:112个字节,表空间的一些整体属性信息。
- xdes_entry:10240字节,存储本组256个区对应的属性信息。
- entry_space:5986字节,用于页结构的填充,没啥实际意义。
- file trailer:8个字节,效验是否完整。
段的结构 (4)---独立表空间结构(三十)相关推荐
- 《Mysql是怎样运行的》读书笔记之独立表空间结构
目录 数据目录 表空间 数据目录 mysql的数据目录是用来存储MySQL运行过程中产生的数据. 数据目录对应一个系统变量datadir.查看这个系统变量就可以了. SHOW VARIABLES LI ...
- InnoDB 独立表空间结构
文章目录 区 区(extent)的概念 区的 4 种状态 XDES Entry 段 段的概念 INODE Entry 区 区(extent)的概念 对于 16KB 的页来说,连续的 64 个页就是一个 ...
- FreeSql (三十四)CodeFirst 迁移说明
FreeSql 支持 CodeFirst 迁移结构至数据库,这应该是(O/RM)必须标配的一个功能. 与其他(O/RM)不同FreeSql支持更多的数据库特性,而不只是支持基础的数据类型,这既是优点也 ...
- FreeSql (三十五)CodeFirst 自定义特性
比如项目内已经使用了其它 orm,如 efcore,这样意味着实体中可能存在 [Key],但它与 FreeSql [Column(IsPrimary = true] 不同. Q: FreeSql 实体 ...
- FreeSql (三十二)Aop
FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...
- FreeSql (三十)读写分离
FreeSql 支持数据库读写分离,本功能是客户端的读写分离行为,数据库服务器该怎么配置仍然那样配置,不受本功能影响,为了方便描术后面讲到的[读写分离]都是指客户端的功能支持. 各种数据库的读写方案不 ...
- NLP(三十六)使用keras-bert实现文本多标签分类任务
本文将会介绍如何使用keras-bert实现文本多标签分类任务,其中对BERT进行微调. 项目结构 本项目的项目结构如下: 其中依赖的Python第三方模块如下: pandas==0.23.4 ...
- Mysql 学习(七)独立表结构存储 二
段的结构 上一节说过表空间分为各个段,每个段里面又是以区为单位,每个区则有64个页.区根据剩余存储空间分为:Free,FREE_FRAG,FULL_FRAG 三种类型,为了方便管理区,给每个区创建XD ...
- 实验4 基于预测分析表法的语法分析程序_第三十届 脑功能磁共振数据处理分析培训班...
北京赛博尔医药科技有限公司(www.cibrmed.com)将于2019年 7月6日 至 2019年7月11日(周六至下周四)举办第三十届脑功能磁共振数据处理分析培训班(课程内容详见课表安排).欢迎大 ...
最新文章
- 99_leetcode_Best Time to Buy and sell Stock
- python在哪里写代码比较适合-适合练习的10个Python项目,每个项目都不到500行代码...
- 如何使用Spring管理Filter和Servlet
- redis安装(linux)
- 我的网站被黑了,关键词被劫持,总结一下是怎么解决的。
- AtCoder Grand Contest 025 B - RGB Coloring
- Python批处理MODIS数据并计算NDVI
- 简析通达信股票接口测试过程
- 前端原生开发解决方案
- wincc逻辑运算符_wincc逻辑运算符_wincc中表达式及公式
- 应用宝上架审核要求_应用宝应用市场APP上架首发申请
- 计算机发展趋势 网络化,计算机的发展趋势表现在多极化网络化等几个方面
- 从高中编码员到国际技术演讲者— Arun Michael Dsouza访谈
- 以YOLOv5为基准实现布匹缺陷检测(Fabric Defect Detection)
- [病毒分析]熊猫烧香
- Activiti多人会签的实现 Activiti
- python程序中如何合理处理[WinError 5]拒绝访问的错误
- php nbl2,NBL二年级新军杀入总决赛 虽败犹荣已创造历史
- 关于嵌套滚动机制的一点思索
- 四个模型与指标体系的建立
热门文章
- [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!
- Linux操作系统的诞生与其对现代信息世界的影响
- 2016年网页设计的5个风向标
- 云原生向量数据库Milvus(二)-数据与索引的处理流程、索引类型及Schema
- html fck编辑器,HTML编辑器FCKeditor使用详解
- 2048小程序源码(html网页小游戏)
- oracle over() 函数使用
- MHA编写实现VIP漂移
- 博客园迎新春对联大赛 -[已圆满结束]
- 两步实现微信小程序分享朋友圈