Skip to content

53.30.pg_largeobject#

目录pg_largeobject保存构成“大对象”的数据。大对象由创建时分配的 OID 标识。每个大对象都分为足够小的段或“页”,可以方便地存储为pg_largeobject中的行。每个页面的数据量定义为LOBLKSIZE(当前为BLCKSZ/4,通常为 2 kB)。

在PostgreSQL9.0 之前,没有与大对象关联的权限结构。因此,pg_largeobject是公开可读的,并且可用于获取系统中所有大对象的 OID(和内容)。现在不再是这样;使用pg_largeobject_metadata获取大对象 OID 的列表。

表 53.30.pg_largeobject

列类型

说明

loid oid(引用 pg_largeobject_metadata.oid

包括此页面的大对象的标识符

pageno int4

此页面在其大对象中的页号(从零开始计数)

data bytea

存储在大对象中的实际数据。这永远不会超过 LOBLKSIZE 字节,甚至可能更少。

pg_largeobject的每一行都保存一个大对象一页的数据,从对象中的字节偏移量(pageno * LOBLKSIZE)开始。该实现允许稀疏存储:页面可能缺失,并且即使不是对象的最后一页,也可能比LOBLKSIZE字节短。大对象中缺失的区域读取为零。