File Space Header & xdes(5)FSP HDR独立表空间结构(三十一)

简介: File Space Header & xdes(5)FSP HDR独立表空间结构(三十一)

前面我们说了段的结构,分了方便段管理区,段又分为inode entry链表来管理,分了方便管理区,区分为xdes entry链表来管理。


前面我们说了第一组extent0的第一个页面FSP_HDR的组成部分,下面主要介绍他的file space header和      xdes entry。

段的结构 (4)---独立表空间结构(三十)


File Space Header部分


从名字可以看出,这部分组要存储表空间的一些整体属性:

space_id:4个字节,表空间id。

not used: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_frag list:16个字节,free frag链表的基节点。

List Base Node for full_frag list:16个字节,full frag 链表的基节点。

Next unused segment id:8个子节,当前表空间下一个未使用的segment id。

List base node for seg_inodes_full list:16个字节,seg_inodes_full链表的基节点。

List base node for seg_inodes_free list:16个字节,seg_inodes_free 链表的基节点。

这里的space_id肯定就是表空间的唯一主键,not used就是未使用的,size代表当前表空间有多少页面。

List base node for free List 和 List Base Node for free_frag list 和 List Base Node for full_frag list都属于表空间直管的链表基节点,都在表空间的第一个页面,也就是FSP HDR页面,方便之后定位这几个链表。

Free_limit:中心思想就是啥时候用到,啥时候初始化,因为我们磁盘上的结构,目录名称文件名称都是和表建立时候同名的,但是每次建立就申请空间这样开销很大,所以我们直接一次申请很大一部分,这样再磁盘上就有很多空闲的空间,这些就放在表空间直管的free链表中,啥时候用到啥时候就把需要用的初始化,于是这个字段前面的就是代表未初始化的,这个字段后面的就代表已经初始化可以使用的。

Next unused segments id:表中每个索引都会生成两个段,当我们创建一个索引的时候,就意味着创建两个段,新段这个唯一id怎么来的呢,总之不是遍历以前的段,这样太耗费性能,这个字段就是记录最大段id,当生成新id直接用最大id的下一个id就好了。

Seg_inodes_full list 和 seg_inodes_free list:seg_inodes_full表示当前段里的链表中已经没有剩余空间存放inode entry了,seg_inodes_free表示还有剩余空间存放inode entry的链表。


XDES Entry 部分


前面我们已经详细介绍过xdes entry的结构 ,全程是extent descritor entry,这个部分就在表空间的第一个页中保存着。Extent0 和extent1的意思其实就是xdes entry0 和xdes entry1,我们把256个区分为一组,在每个组的第一个页存放着xdes entry部分。这样我们每个组的extent entry结构都是固定的,所以这里直接访问就很简单。

相关文章
|
Java Apache Maven
HttpClientConnectionManager哪个版本里有?
【8月更文挑战第25天】HttpClientConnectionManager哪个版本里有?
640 2
|
网络协议
`ss` 命令的基本用法
`ss` 命令用于查看网络连接状态,常用选项包括 `-t` 显示 TCP 连接,`-a` 显示所有连接,`-n` 显示数字形式的地址和端口,`-l` 仅显示监听端口。例如,`ss -tanl` 可查看所有 TCP 监听端口及其详细信息。其他常用选项有 `-u` 显示 UDP 连接,`-p` 显示进程信息,`-e` 显示扩展信息等。通过这些选项,可以灵活地检查和分析网络连接。
641 0
|
安全 网络安全
jsch 报错 no matching host key type found. Their offer: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha> 如何处理
【5月更文挑战第24天】jsch 报错 no matching host key type found. Their offer: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha> 如何处理
1365 1
|
Web App开发 前端开发 JavaScript
CSS 媒体查询 @media【详解】
CSS 媒体查询 @media【详解】
509 0
|
存储 运维 算法
社交软件红包技术解密(十三):微信团队首次揭秘微信红包算法,为何你抢到的是0.01元
本文中,我们将介绍几种主流的IM红包分配算法,相信聪明的你一定能从中窥见微信红包技术实现的一些奥秘。
425 0
AutoJS4.1.0实战教程 ---快手极速版
AutoJS4.1.0实战教程 ---快手极速版
861 0
|
网络协议 安全 网络安全
【华为HCIP | 高级网络工程师】刷题日记(5)
【华为HCIP | 高级网络工程师】刷题日记(5)
729 0
|
机器学习/深度学习 人工智能 资源调度
隐语1.0正式发布|MVP部署体验包、资源调度框架Kuscia全新亮相!
隐语1.0正式发布|MVP部署体验包、资源调度框架Kuscia全新亮相!
642 0
VsCode插件一键刷Github的commit记录-AutoCommit
autoCommit 用于刷commit记录,可以刷过去几年的commit以及未来的commit, 一键帮你把github首页的绿色格子填满。 它是一个VScode插件可以自由控制commit日期(提交过去几年的commit以及未来的commit) 它可以自由控制commit次数, 固定或者随机commit次数。 插件提供完善的日志: 清晰的了解插件的运行情况 使用效果 使用本插件来控制commit次数. 如下图,你甚至可以规划一下commit次数,然后画出图形, 天空才是你的极限。 自动commit演示: 功能特性 一键提交: 设置好参数之后,一键超快提交commit 选择
1175 0
VsCode插件一键刷Github的commit记录-AutoCommit
|
对象存储 Python
Python文件上传Minio和阿里Oss工具 | Python工具
Python文件上传Minio和阿里Oss工具 | Python工具