3.19. pg_largeobject

pg_largeobject 保存那些标记着 "大对象"的数据.一个大对象是使用其创建时分配的 OID 标识的.每个大对象都分解成足够小的小段或者"页面" 以便以行的形式存储在 pg_largeobject 里. 每页的数据定义为 LOBLKSIZE (目前是 BLCKSZ/4,或者通常是 2K 字节).

Table 3-19. pg_largeobject 字段

名称类型引用描述
loidoid 包含本页的大对象的标识符
pagenoint4 本页在其大对象数据中的页码 从零开始计算
databytea  存储在大对象中的实际数据. 这些数据绝不会超过 LOBLKSIZE 字节,而且可能更少.

pg_largeobject 的每一行保存 一个大对象的一个页面,从该对象内部的字节偏移(pageno * LOBLKSIZE) 开始.这种实现允许松散的存储∶页面可以丢失,而且可以比 LOBLKSIZE 字节少 --- 即使它们不是对象的最后一页.大对象内丢失的部分读做零.