Gbase8s 物理存储单元

chunk
chunk就是用于存储数据的连续磁盘空间,也就是存储数据库数据的文件或者裸设备,一个chunk是有可以是一个裸设备或者一个unix文件,一个chunk最大可以是4TB,最多可以有32767个chunk。
root chunk包含整个数据库保留也及系统表等信息,一般将物理日志、逻辑日志迁移到单独的dbspce上。
一个非root chunk主要存储表,索引的数据,划分为多个连续的exent。

page
数据页page是基本的存储单位,是最小的IO单元。即使我们只对一个page里的某一行记录进行修改,Gbase8s也需要对整个数据页进行读取到内存和写入到磁盘操作。磁盘的一个数据页读取到内存就会分配一个同样大小的内存page来存储。gbase支持不同大小的数据页:2KB、4KB、8KB、16KB。在大多数unix系统中,默认的数据页大小是2KB。在win系统中,默认页的大小是4KB。

页地址
校验位:占用2字节
标记位:标记该数据页存储的是表的数据还是索引
记录数计数器:占用2B,记录该数据也总共存储的记录数
第一个空槽的指针Pfree:占用2B,用来指向页内第一个空闲的槽在页内的偏移值
空闲槽数量Nfree:占用2B,页内总共空闲的槽数量
下一页:4B,指向下一页的地址
上一页:占用4B,指向上页地址
数据页有两部分组成,时间戳和每个槽的描述信息
槽表:为slots描述信息,数据页中有多少slots,则会对应多少个slots bitmap,每个占用4B,记录slots在页内
	的偏移地址和长度,得当记录被删除时,只是将其中的占用长度设置为0,在物理上并没有将记录信息清空
一个数据页最多能存储255个slots。
一个数据页的页头和页尾占用的总空间为28B+ n*4B, 28 + n(4+rowsize) = pageSize【页头占用24B,页尾timestamp 4B,slots table 有多少条记录就会有多少个slots bitmap,记录偏移与长度】
posted @ 2022-07-27 12:34  乐酷yuan  阅读(295)  评论(0编辑  收藏  举报