PostgreSQL的自举(Bootstrap)BKI文件是由系统的初始化过程自动生成的,用于定义数据库的系统目录结构和初始数据。这些文件通常位于 PostgreSQL 源代码中的 src/include/catalog/bootstrap 目录下。以下是自举BKI文件的一般结构:
1. 文件命名规范:
- 通常,BKI文件的命名遵循一定的规范,例如以 boot 开头,后跟一个表示数据库版本的数字和文件扩展名。例如,boot1600.dat 表示数据库版本为1600。
2. 头部信息:
- BKI文件通常以头部信息开始,包含有关文件版本和其他元信息的内容。
magic 0 0xBEEFBEEF
PostgreSQL 自举BKI文件的结构
version 4
endian 0
3. 命令序列:
- BKi文件包含了一系列的SQL命令,用于创建和定义数据库对象。这些命令通常包括 CREATE TABLE、CREATE INDEX、INSERT INTO 等。
# Table: pg_class
#
# id | relname | relnamespace | reltype | ...
#
table pg_class 1259
2 oidvector 1009
3 name 19
4 aclitem 1033
# ... 其他列的定义
# Index: pg_class_oid_index
#
# id | indexrelname | indrelid | ...
#
index pg_class_oid_index 3310 pg_class_oid_index 2614
2 name 19
3 oidvector 1009
# ... 其他列的定义
# ... 其他对象的定义和初始数据
4. INCLUDE命令:
- 有时,BKI文件中使用 INCLUDE 命令来引入其他SQL文件,以提高可维护性。
INCLUDE 'path/to/other/file.sql';
5. OID分配:
- BKi文件中还包括 OID(对象标识符)的分配。OID是数据库中对象的唯一标识符。
SET last_oid = 16384;
6. 文件结束标记:
- 文件的末尾通常包含一个特殊的标记,表示文件结束。