Firebird Internals: Inside a Firebird Database
261.00 KB
63 页
0 下载
195 浏览
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 页请下载阅读 -
文档评分













