pg_largeobject
#pg_largeobject
目录保存构成“大对象”的数据。大对象由在其创建时分配的 OID 进行标识。每个大对象都被划分为段或“页”,这些段或页足够小,既可以方便地存储在 pg_largeobject
中,也可以存储为行。每页的数据量被定义为 LOBLKSIZE
(目前为 BLCKSZ/4
,或通常为 2 kB)。
在 PostgreSQL 9.0 之前,没有与大对象关联的权限结构。因此,pg_largeobject
可公开读取,且可用于获取系统中所有大对象的 OID(及内容)。现在不再是这样;可以使用 pg_largeobject_metadata
获取大对象 OID 的列表。
表 51.30. pg_largeobject
列
列类型 描述 |
---|
包含此页的大对象的标识符 |
此页在其大对象中的页编号(从零开始计数) |
实际存储在大对象中的数据。该数据永远不会超过 |
pg_largeobject
的每一行保存一个大对象一个页面的数据,从对象中的字节偏移量 (pageno * LOBLKSIZE
) 开始。此实现允许稀疏存储:页面可能缺失,且即使不是对象的最后一页,长度也可能小于 LOBLKSIZE
字节。大对象中缺失区域读作零。