pg_largeobject 表保存那些标记着"大对象"的数据。一个大对象是使用其创建时分配的 OID 标识的。每个大对象都分解成足够小的小段或者"页面"以便以行的形式存储在 pg_largeobject 里。每页的数据定义为 LOBLKSIZE(目前是 BLCKSZ/4 或者通常是 2K 字节)。
表43-21. pg_largeobject 字段
名字 | 类型 | 描述 | |
---|---|---|---|
loid | oid | 包含本页的大对象的标识符 | |
pageno | int4 | 本页在其大对象数据中的页码从零开始计算 | |
data | bytea | 存储在大对象中的实际数据。这些数据绝不会超过 LOBLKSIZE 字节,而且可能更少。 |
pg_largeobject 的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno * LOBLKSIZE)开始。这种实现允许松散的存储:页面可以丢失,而且可以比 LOBLKSIZE 字节少(即使它们不是对象的最后一页)。大对象内丢失的部分读做零。