返回首页

gbase数据、南大通用产品文档:GBase8s简单大对象的存储

更新日期:2024年09月11日

本节解释数据库服务器用于存取简单大对象 (TEXT 或 BYTE 数据)的结构和存储技术。
blobspace 的结构
当创建 blobspace 时,可以指定数据页的有效大小,这称为 blobpage 。Blobspace 的
blobpage 大小是在创建 blobspace 时指定的。Blobpage 大小必须是页大小的倍数。(有
关确定数据库服务器页大小的信息,请参阅GBase 8s 管理员指南 中的 管理磁盘空间 一
章。)Blobspace 中的所有 blobpage 的大小都是相同的,但 blobpage 的大小在
blobspace 之间可能变化。Blobpage 大小可能大于页大小,因为存储在 blobspace 中的
数据从不写入共享内存中的大小为页的缓冲区中。
定制 blobpage 大小的好处是存储效率。在 blobspace 中,TEXT 和 BYTE 数据存储在一
个或多个 blobpage 中,简单大对象不共享 blobpage 。当 TEXT 或 BYTE 数据等于或稍
小于 blobpage 大小时,存储是最有效的。
Blobspace 自由图页和位图页是作为数据库服务器页指定的大小。这使它们能够读入共享
内存和被记录下来。
当首次创建 blobspace 时,它包含以下结构:
 Blobspace 自由图页
 用于跟踪自由图页的 blobspace 位图
 未使用的 blobpage
dbspace blobpage 的结构
存储在 dbspace 中的 TEXT 或 BYTE 数据是存储在 blobpage 中的。
Dbspace
blobpage 的
结构类似于 dbspace 数据页的结构。
唯一的区别是可以与 TEXT 或 BYTE 数据一起存储在
数据区域的额外 12 字节。
如果多个简单大对象可以适合一个页或如果简单大对象的多个拖尾部分可以适合页,那么
简单大对象可以共享 dbspace blobpages 。
有关如何估计特定表所需的 dbspace
blobpage 数量的讨论,
请参阅 GBase
8s 性能指南 。


GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 270 -
存储在 dbspace 页中的每段 TEXT 或 BYTE 数据前面可能有多达 12 字节的信息,
这些信
息不出现在任何其他 dbspace 页上。这些额外字节是开销的。
简单大对象存储和描述符
包含 TEXT 或 BYTE 数据的数据行在行本身中不包含数据。数据行包含 56 字节的描述符
和一个指向数据第一个分段存储位置的转发指针(rowid)。
描述符可指向以下项之一:
 页(如果数据存储在 dbspace 中)
 blobpage (如果数据存储在 blobspace 中)
简单大对象的创建
当插入含 TEXT 或 BYTE 数据的行时,首先创建简单大对象。在简单大对象写入磁盘之后,
使用描述符更新行,并插入行。
简单大对象的删除或插入
数据库服务器无法修改简单大对象。它仅可以插入或删除它们。删除简单大对象意味着数
据库服务器释放已删除对象所消耗的空间以再用。
更新 TEXT 或 BYTE 数据时,创建新的简单大对象,并使用新的 blob 描述符更新数据行。
行的旧映象包含指向简单大对象的废旧值得描述符。将释放由废旧简单大对象所消耗的空
间,用于提交更新之后的再使用。如果删除了包含其 blob 描述符的行,那么自动删除简
单大对象。(存储已删除简单大对象的 Blobpage 不可复用,直到备份了包含已删除简单
大对象的原始 INSERT 记录的逻辑日志。有关更多信息,请参阅 GBase
8s 管理员指南 中
的什么是逻辑日志一章中的将逻辑日志文件被分为可用 blobpage 。)
简单大对象的大小限制
blob 描述符可以容纳的最大简单大对象是 (2
31 - 1) 或大约 2 千兆字节。
blobspace 页类型
每个 blobspace chunk 包含三种类型的项:
 Blobspace 自由图页
 位图页
 Blobpage
blobspace自由图页
blobspace 自由图页标识未使用的 blobpage ,以便数据库服务器可作为简单大对象创建
的一部分来分配它们。分配 blobpage 时,将更新该页的自由图条目。简单大对象的所有
条码都是链接的。
Blobspace 自由位图页是一个数据库服务器页的大小,
自由图页上的每一个条目都是 8 字
节,作为两个 32 位字进行存储,如下所示:
 第一字中的第一位指定 blobpage 是可用的还是已使用的。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 271 -
 第一字中接下来的 31 位标识写入此 blobpage 时的当前逻辑日志文件。(该信息
是记录 TEXT 或 BYTE 数据所必需的。)
 第二字包含与存储在该页上的简单大对象相关联的 tblspace 号。
可以适合自由图页的条目数依赖于您计算机的页大小。Blobspace chunk 中自由图页数依
赖于 chunk 中 blobpage 的数量。
blobspace 位图页
blobspace 位图页跟踪 chunk 中 blobspace 自由图页的充满度和数目。每个 blobspace
位图页可以跟踪一定数量的位图页。Blobspace 位图页的大小取决于系统页的大小。如果
系统大小为 2K ,blobspace 位图页可跟踪 2,032,128 个 blobpage 。如果系统页大小为
4K ,blobspace 位图页可以跟踪 8,258,048 个 blobpage 。
blobpage
blobpage 包含 TEXT 或 BYTE 数据。
blobpage 大小由创建 blobspace 的数据库服务器管
理要指定。blobpage 大小指定为页大小的倍数。
blobspace blobpage 的结构
用于在 blobspace 中存储简单大对象的存储策略不同于 dbspace 存储策略。数据库服务
器不在单个 blobspace
blobpage 上组合整个简单大对象或简单大对象的某些部分。例如:
如果每个 blobspace blobpage 为 24 千字节,那么 26 千字节的简单大对象存储在两个
24 千字节的页上。额外的 22 千字节空间保持未使用。
blobpage 的结构包括 blobpage 头、 TEXT 或 BYTE 数据以及页结束时间戳记。blobpage
头除了其他信息还包含与数据行中转发指针相关联的页头时间戳记和 blob时间戳记。
如果
简单大对象存储在多个 blobpage 上,那么 blobpage 头中还包含下一 blobpage 的转发
指针和另一个 blobpage 时间戳记。

Row/column index out of range
行或列索引超出范围。
比较索引和超出查询的行和列数,确保它在范围内。

bbox_dump_path
参数说明:黑匣子core 文件的生成路径。此参数只有当enable_bbox_dump 为on 时才
生效。
该参数属于SIGHUP 类型参数,
请参考表GUC 参数设置方式中对应设置方法进行设置。
取值范围:字符型
默认值:空。默认生成黑匣子core 文件的路径为读取/proc/sys/kernel/core_pattern 下的
路径,如果这个路径不是一个目录,或者用户对此目录没有写权限,黑匣子core 文件将生
成在数据库的data 目录下。或者以安装时指定的目录为准。