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结构都是固定的,所以这里直接访问就很简单。

相关文章
|
5月前
|
Java
映射大量文件的正解,Description:Field commentMapper in zero.file.videoProject.controller.CommentController r
映射大量文件的正解,Description:Field commentMapper in zero.file.videoProject.controller.CommentController r
|
存储 编译器 程序员
C++11之内联名字空间(inline namespace)和ADL特性(Argument-Dependent name Lookup)
C++11之内联名字空间(inline namespace)和ADL特性(Argument-Dependent name Lookup)
201 0
|
存储 Perl
Verilog读书笔记---数据类型、系统任务、`define、parameter、localparam三者的区别
Verilog读书笔记---数据类型、系统任务、`define、parameter、localparam三者的区别
725 0
Verilog读书笔记---数据类型、系统任务、`define、parameter、localparam三者的区别
|
Linux
linux驱动开发--copy_to_user 、copy_from_user函数实现内核空间数据与用户空间数据的相互访问
<strong><u>设备读操作</u></strong><br><p>如果该操作为空,将使得read系统调用返回负EINVAL失败,正常返回实际读取的字节数</p> <p><strong>ssize_t (*read)(struct file *filp, char __user *buf, size_t  count, lofft *f_pos);</strong><br><span
12180 0
|
存储 关系型数据库 MySQL
Xdes&Inode&Seg Header(6) 独立表空间结构(三十二)
Xdes&Inode&Seg Header(6) 独立表空间结构(三十二)
|
存储 关系型数据库 数据库
Data dictionary header(2) --系统表空间结构(三十四)
Data dictionary header(2) --系统表空间结构(三十四)
|
存储 前端开发 关系型数据库
区的分类&XDES Entry(3)---独立表空间结构(二十九)
区的分类&XDES Entry(3)---独立表空间结构(二十九)