搜索

pdf文档 Firebird Internals: Inside a Firebird Database

261.00 KB 63 页 0 下载 194 浏览 0 评论 0 收藏
所属分类: 数据库 / Firebird
语言 格式 评分
英语
.pdf
3
摘要
文档详细介绍了Firebird数据库的内部结构,基于ODS 11.1版本(Firebird 2.1)和4096字节页面大小。数据库创建时生成多种页面类型:头页面(type 0x01)存储数据库元数据如页面大小、ODS版本、事务信息等;页面库存页面(PIP,type 0x02)跟踪页面使用情况;写前日志页面(WAL,type 0x0a)位于页面2但已不再使用,计划从Firebird 3.0起移除。多文件数据库每个文件均有头页面,影子文件用于故障恢复。数据压缩方面,Firebird不基于前序记录压缩,但压缩重复字符序列(如'666'),不压缩重复字符串(如'abcabc')。记录存储包含NULL状态位图(每32字段一组),位0表示NULL状态。测试数据库为空,创建于32位Linux小端系统。
AI总结
Firebird 数据库的内部结构文档,主要围绕 ODS 11.1(Firebird 2.1)、页大小 4096 字节的数据库展开,基于 32 位 Linux 小端序系统。 **数据库结构**:新数据库创建时,会生成文件、格式化头页,并创建系统表(RDB$、MON$)及索引。单文件数据库由统一大小的页组成,第一页为头页(类型 0x01),第二页为页库存页(PIP,类型 0x02),第三页为预写日志页(WAL,类型 0x0a,但已废弃,计划在 Firebird 3.0 移除)。多文件数据库每个文件都有独立的头页。影子文件用于故障恢复。 **数据库头页(类型 0x01)**:该页位于第一个文件的起始位置,存储数据库描述信息,包括页大小、ODS 版本、事务信息(最旧事务、下一事务等)、创建日期、下一连接 ID、影子计数、实现环境(用于判断字节序兼容性)、缓存缓冲区数量等。头页的前 1024 字节在启动时被读取用于验证。 **数据压缩与 NULL 处理**:文档通过示例展示了数据页的存储细节。Firebird 不会基于前序记录进行压缩,但会压缩重复字符(如 "666")。每个记录前有一个至少 4 字节的 NULL 状态位图,用于标记前 32 个字段是否为空(位为 1 表示 NULL)。对于超过 32 字段的表,位图按 32 位一组扩展。 **预写日志页(类型 0x0a)**:每个数据库有一个 WAL 页,固定位于第 2 页。该结构已不再使用,纯粹浪费空间,预计从 Firebird 3.0 起新数据库将不再包含此页。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 56 页请下载阅读 -
文档评分
请文明评论,理性发言.