PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

33.2. 实现特性 #

大对象在底层实现上会将海量数据拆分成若干连续的“数据块”(chunks,默认每块通常为 2KB),并作为系统表中的多行数据进行物理持久化。底层的 B 树索引保证了在执行随机寻道读写特定字节偏移量时能够瞬时定位目标块编号。

大对象存储在物理上具备稀疏分配(Sparse Allocation)特性:如果应用程序创建一个新大对象并在偏移量 1,000,000 处仅写入几个字节,系统并不会物理分配前一百万字节的空间,仅为实际写入的数据块分配存储;读取未分配的空白前置区间时系统会自动补零返回。

大对象受数据库权限系统严格保护:读取大对象需要拥有 SELECT 权限,修改或截断需要 UPDATE 权限;只有大对象的所有者或超级用户有权执行删除销毁。