9.2.4 【MySQL】段的结构

news2024/11/27 2:37:44

段不对应表空间中某一个连续的物理区域,而是一个逻辑上的概念,由若干个零散的页面以及一些完整的区组成。像每个区都有对应的XDES Entry来记录这个区中的属性一样,定义了一个INODE Entry结构来记录段中的属性。

它的各个部分释义如下:

Segment ID

就是指这个 INODE Entry 结构对应的段的编号(ID)。

NOT_FULL_N_USED

这个字段指的是在 NOT_FULL 链表中已经使用了多少个页面。下次从 NOT_FULL 链表分配空闲页面时可以直接根据这个字段的值定位到。而不用从链表中的第一个页面开始遍历着寻找空闲页面。

List Base Node

分别为段的 FREE 链表、 NOT_FULL 链表、 FULL 链表定义了 List Base Node ,这样我们想查找某个段的某个链表的头节点和尾节点的时候,就可以直接到这个部分找到对应链表的 List Base Node 。

Magic Number :

这个值是用来标记这个 INODE Entry 是否已经被初始化了(初始化的意思就是把各个字段的值都填进去了)。如果这个数字是值的 97937874 ,表明该 INODE Entry 已经初始化,否则没有被初始化。

Fragment Array Entry

每个 Fragment Array Entry 结构都对应着一个零散的页面,这个结构一共4个字节,表示一个零散页面的页号。

9.2.5 各类型页面详细情况

9.2.5.1 FSP_HDR 类型

首先看第一个组的第一个页面,当然也是表空间的第一个页面,页号为 0 。这个页面的类型是 FSP_HDR ,它存储了表空间的一些整体属性以及第一个组内256个区的对应的 XDES Entry 结构,直接看这个类型的页面的示意图:

从图中可以看出,一个完整的 FSP_HDR 类型的页面大致由5个部分组成,各个部分的具体释义如下表:

名称

中文名

占用空间大小

简单描述

file header

文件头部

38字节

页的一些通用信息

file space header

表空间头部

112 字节

表空间的一些整体属性信息

XDES Entry

区描述信息

10240 字节

存储本组256个区对应的属性信息

Empty Space

尚未使用空间

5986 字节

用于页结构的填充,没啥实际意义

File Trailer

文件尾部

8 字节

8 字节

File Space Header部分

下面是各个属性的简单描述:

名称

占用空间大小

描述

Space ID

4字节

表空间的ID

Not Used

4字节

这4个字节未被使用,可以忽略

Size

4字节

当前表空间占有的页面数

FREE Limit

4字节

尚未被初始化的最小页号,大于或等于这个页号的区对应的XDES Entry结构都没有被加入FREE链表

Space Flags

4字节

表空间的一些占用存储空间比较小的属性

FRAG_N_USED

4字节

FREE_FRAG链表中已使用的页面数量

List Base Node for FREE List

16字节

FREE链表的基节点

List Base Node for FREE_FRAGList

16字节

FREE_FREG链表的基节点

List Base Node for FULL_FRAGList

16字节

FULL_FREG链表的基节点

Next Unused Segment ID

16字节

当前表空间中下一个未使用的 Segment ID

List Base Node forSEG_INODES_FULL List

16字节

SEG_INODES_FULL链表的基节点

List Base Node forSEG_INODES_FREE List

16字节

SEG_INODES_FREE链表的基节点

List Base Node for FREE List 、 List Base Node for FREE_FRAG List 、 List Base Node forFULL_FRAG List,这三个分别是直属于表空间的 FREE 链表的基节点、 FREE_FRAG 链表的基节点、FULL_FRAG 链表的基节点,这三个链表的基节点在表空间的位置是固定的,就是在表空间的第一个页面(也就是 FSP_HDR 类型的页面)的 File Space Header 部分。

FRAG_N_USED

这个字段表明在 FREE_FRAG 链表中已经使用的页面数量,方便之后在链表中查找空闲的页面。

FREE Limit

表空间对应着具体的磁盘文件,创建表空间的时候对应的磁盘文件中都没有数据,所以我们需要对表空间完成一个初始化操作,包括为表空间中的区建立 XDES Entry 结构,为各个段建立INODE Entry 结构,建立各种链表等操作。一开始为表空间申请的空间,实际上绝大部分都是空的,我们可以选择吧所有的空闲区,对应的 XDES Entry 结构加入FREE 链表,也可以选择只把一部分的空闲区加入 FREE 链表,等啥时候空闲链表中的 XDES Entry 结构对应的区不够使了,再把之前没有加入 FREE 链表的空闲区对应的 XDES Entry 结构加入 FREE 链表,中心思想就是啥时候用到啥时候初始化,为表空间定义了 FREE Limit 这个字段,在该字段表示的页号之前的区都被初始化了,之后的区尚未被初始化。

Next Unused Segment ID

表中每个索引都对应2个段,每个段都有一个唯一的ID,那当我们为某个表新创建一个索引的时候,就意味着要创建两个新的段。 NextUnused Segment ID 的字段,该字段表明当前表空间中最大的段ID的下一个ID,这样在创建新段的时候赋予新段一个唯一的ID值就直接使用这个字段的值就好。

Space Flags

表空间对于一些布尔类型的属性,只需要几个比特位搞定的属性都放在这个Space Flags中存储,虽然它只有4个字节,32个比特位大小,却存储了好多表空间的属性,详细情况如下表:

|标志名称|占用的空间(单位:bit)|描述| |:--:|:--:|:--:| | POST_ANTELOPE |1|表示文件格式是否大于 ANTELOPE || ZIP_SSIZE |4|表示压缩页面的大小| | ATOMIC_BLOBS |1|表示是否自动把值非常长的字段放到BLOB页里|| PAGE_SSIZE |4|页面大小| | DATA_DIR |1|表示表空间是否是从默认的数据目录中获取的| | SHARED |1|是否为共享表空间| | TEMPORARY |1|是否为临时表空间| | ENCRYPTION |1|表空间是否加密| | UNUSED |18|没有使用到的比特位|

List Base Node for SEG_INODES_FULL List 和 List Base Node for SEG_INODES_FREE List

每个段对应的 INODE Entry 结构会集中存放到一个类型位 INODE 的页中,如果表空间中的段特别多,则会有多个 INODE Entry 结构,可能一个页放不下,这些 INODE 类型的页会组成两种列表:

  • SEG_INODES_FULL 链表,该链表中的 INODE 类型的页面都已经被 INODE Entry 结构填充满了,没空闲空间存放额外的 INODE Entry 了。
  • SEG_INODES_FREE 链表,该链表中的 INODE 类型的页面都已经仍有空闲空间来存放 INODE Entry 结构。

XDES Entry部分

XDESEntry 就是在表空间的第一个页面中保存的。我们知道一个 XDES Entry 结构的大小是40字节,但是一个页面的大小有限,只能存放有限个 XDES Entry 结构,所以我们才把256个区划分成一组,在每组的第一个页面中存放256个 XDES Entry 结构。大家回看那个 FSP_HDR 类型页面的示意图, XDES Entry 0 就对应着 extent 0 , XDESEntry 1 就对应着 extent 1 ... 依此类推, XDES Entry255 就对应着 extent 255 。

每个区对应的XDES Entry结构的地址都是固定的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

向AI提问,我是怎么做的?

OpenAI 是一个人工智能研究实验室和技术公司,而 ChatGPT(Chatbot GPT)是 OpenAI 开发的一种基于自然语言处理技术的聊天机器人模型。它能够理解用户的输入并生成相应的回复,通过模仿人类对话的方式进行交流。但是AI对话与人完全不…

IT数据预警设备监控

信息技术已经成为企业经营的重要支撑。恶意程序、黑客攻击、数据泄露等问题频繁发生,对公司经营影响很大。因此,IT预警监控已经成为公司维护数据安全的主要防御。  IT预警监控是一种基于实时监控公司IT系统,及时发现和处理隐性安全威胁管理…

MySQL强制使用索引的两种方式及优化索引,使用MySQL存储过程创建测试数据。

一、MySQL强制使用索引的两种方式 1、使用 FORCE INDEX 语句: explainselect*fromtbl_test force index (index_item_code)where(item_code between 1 and 1000) and (random between 50000 and 1000000)order byrandomlimit 1; 使用 FORCE INDEX(索引…

「华为P60 Pro」只要599元,老牌国产再现骚操作

国内智能手机经过这么些年的洗牌,真正活下来且过得滋润其实也就那屈指可数的几家。 刚开始大家还能拼创意、拼设计,最后发现拼来拼去,还是逃不开同质化命运。 到了现在,也不比啥创意了,干脆堆配置、卷规格一条路走到…

14.TIM输出比较示例程序(PWM驱动LED呼吸灯PWM驱动舵机PWM驱动直流电机)

目录 输出比较相关库函数 PWM驱动LED呼吸灯 PWM驱动舵机 PWM驱动直流电机 输出比较相关库函数 1.OC初始化(掌握) // 配置输出比较模块,输出比较单元有四个,对应也有四个函数 // 第二个参数是结构体,就是输出比较…

Docker的相关知识介绍以及mac环境的安装

一、什么是Docker 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异 Docker就是来解决这些问题的。Docker是一个快速交付应用、运行应用的技术&#x…

互联网医院牌照|互联网医院牌照审批流程和材料

随着科技的不断进步和社会的发展,互联网医院已经成为了当前的热点。而互联网医院的准入门槛自然也就越来越高。如果您计划成立一个互联网医院,您需要了解申请互联网医院牌照所需要注意的方面以及申请的流程。 一、资质申请前的准备 1、立项阶段准备 在立…

Python异步框架大战:FastAPI、Sanic、Tornado VS Go 的 Gin

一、前言 异步编程在构建高性能 Web 应用中起着关键作用,而 FastAPI、Sanic、Tornado 都声称具有卓越的性能。本文将通过性能压测对这些框架与Go的Gin框架进行全面对比,揭示它们之间的差异。 原文:Python异步框架大战:FastAPI、Sa…

文心一言 VS 讯飞星火 VS chatgpt (101)-- 算法导论9.3 7题

七、用go语言,设计一个 O(n)时间的算法,对于一个给定的包含n个互异元素的集合 S 和一个正整数k≤n,该算法能够确定 S 中最接近中位数的k个元素。 文心一言: 要设计一个 O(n) 时间的算法来找到集合 S 中最接近中位数的 k 个元素&…

诊断27服务介绍

在UDS诊断协议中,有一些服务,比如2E服务写入DID数据,2F服务控制输入输出,它们都会改变ECU控制器的内存数据,所以在请求这类服务时需要慎之又慎。诊断协议设计了一个安全解锁机制,让ECU在接收到某些诊断服务(2E、2F等)前需要处于解锁状态,这就是27服务实现。 Tester发…

【校招VIP】前端操作系统之存储管理-交换

考点介绍: 前端开发的时候,在页面刷新之后,我们的所有数据都会被清空,这时候就要用到本地存储技术了,前端的存储数据的方式有四种:cookie、localStorage、sessionStorage和indexDB。 本期分享的前端操作系…

JavaScript简介引入方式(JavaScript基础语法、JavaScript对象、BOM、DOM、事件监听)

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JavaScript简介&引入方式 简介&#xf…

手把手教你实现:将后端SpringBoot项目部署到华为云服务器上

前言 前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(localhost) 如果没有可以看这篇:一个基于SpringBoot的后端项目 注册华为云账号 华为云官网 购买云服务器 产品 -> 华为云耀云服务器…

数据结构--插入排序

目录 插入排序 算法实现 算法效率分析 插入排序的优化-折半插入排序 最终的结果:(方式) 优化-折半查找的代码实现 ​回顾 插入排序 算法实现 算法效率分析 空间复杂度和问题规模无关 插入排序的优化-折半插入排序 之前的元素有序&am…

【2023集创赛】加速科技杯三等奖作品:私密性高精度刷手身份认证系统

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)加速科技杯三等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼…

pdf怎么压缩?pdf压缩方法大全

pdf怎么压缩?PDF是一种广受欢迎的文件格式,相信现在有很多用户都在使用。这是因为PDF具有出色的兼容性,适用于包含数据、图片、表格和文字等各种内容,不管是在电脑、手机、平板上,都可以让文件以最规范的方式打开呈现给…

垃圾收集器ParNewCMS与底层三色标记算法

JVM字节码文件class:(16进制) 前四个字节码CA FE BA BE,固定logo包含lineNumberTable:用于异常的定位默认第一个localVariableTable为this,无构造方法也会存在最大接口数FFFF 》65535包含最大操作数栈深度…

【算法思想】贪心

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

postgresql,在pgAdmin中修改列名称和列的类型

修改列名 alter table "表名称" rename "旧列名" to "新名称";是否要加引号要看情况,不加引号如果报错,就要加上。无引号:那么所有内容将自动为小写,不区分大小写;带引号:所…

网络安全,weblogic漏洞复现

WebLogic是美国Oracle公司出品的一个Java应用服务器,是一个基于JAVAEE架构的中间件,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用。 2|0弱口令登陆部署shell文件 App Weblogic Path weblogic/weak_password 2|1介绍 用户管理…