On this page
52.30. pg_largeobject
目录pg_largeobject
包含构成“大对象”的数据。大对象由创建对象时分配的 OID 标识。每个大对象都被分成足够小的小段或“页面”,以方便地作为行存储在pg_largeobject
中。每页的数据量定义为LOBLKSIZE
(当前为BLCKSZ/4
,通常为 2 kB)。
在 PostgreSQL 9.0 之前,没有与大对象相关的权限结构。结果,pg_largeobject
是公共可读的,可以用来获取系统中所有大型对象的 OID(和内容)。这已不再是这种情况;使用pg_largeobject_metadata获取大对象 OID 的列表。
表 52.30. pg_largeobject
列
Name | Type | References | Description |
---|---|---|---|
loid |
oid |
pg_largeobject_metadata.oid |
包含此页面的大对象的标识符 |
pageno |
int4 |
该页面在其大对象内的页码(从零开始计数) | |
data |
bytea |
实际数据存储在大对象中。这永远不会超过LOBLKSIZE 个字节,并且可能会更少。 |
pg_largeobject
的每一行都保存一个大对象一页的数据,该数据从对象内的字节偏移量(pageno * LOBLKSIZE
)开始。该实现允许稀疏存储:页面可能丢失,并且即使不是对象的最后一页,也可能少于LOBLKSIZE
个字节。大对象内的缺失区域读为零。