历史版本。 PostgreSQL 9.1 已结束支持。 2016-10-27. 请参阅 当前版本手册.
45.28. pg_largeobject #
目录pg_largeobject保存构成“大对象”的数据。一个大对象在被创建时会被分配一个OID。每个大对象被分解成足够小的段或“页”,以便方便地作为行存储在pg_largeobject中。每页中的数据量被定义为LOBLKSIZE(目前是BLCKSZ/4或是2 kB)。
在PostgreSQL 9.0 之前,大对象没有相关的权限结构。因此,pg_largeobject曾是公开可读的,并且可以用来获得系统中所有大对象的 OID(和内容)。但现在已经不是这样了;可使用pg_largeobject_metadata来获得大对象 OID 的列表。
表 45.28. pg_largeobject 列
| Name | Type | References | Description |
|---|---|---|---|
loid | oid | | Identifier of the large object that includes this page |
pageno | int4 | Page number of this page within its large object (counting from zero) | |
data | bytea | Actual data stored in the large object.
This will never be more than LOBLKSIZE bytes and might be less.
|
pg_largeobject的每一行保存一个大对象的一个页的数据,从对象内部的字节偏移量(pageno * LOBLKSIZE)开始。现在的实现允许稀疏存储:页面可能丢失,并且可能比LOBLKSIZE字节短(即便不是最后一页)。一个大对象中丢失的区域会被读出为0。