pg_largeobject

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 48. 系统表 | 下一页

# 48.29. `pg_largeobject`

`pg_largeobject`表保存那些标记着"大对象"的数据。 一个大对象是使用其创建时分配的 OID 标识的。每个大对象都分解成足够小的小段或者 "页面"以便以行的形式存储在`pg_largeobject`里。 每页的数据定义为`LOBLKSIZE`(目前是`BLCKSZ/4`或者通常是 2K 字节)。

PostgreSQL 9.0之前，没有许可结构与大对象相关。因此，`pg_largeobject` 公开可读并且可以用来包含系统中所有大对象的OID（和内容）。现在不再是这样了； 使用`pg_largeobject_metadata` 获取大对象OID的列表。

表 48-29. `pg_largeobject` 字段

名字 | 类型 | 引用 | 描述
--- | --- | --- | ---
`loid` | `oid` | ``pg_largeobject_metadata`.oid` | 包含本页的大对象的标识符
`pageno` | `int4` |  | 本页在其大对象数据中的页码从零开始计算
`data` | `bytea` |  | 存储在大对象中的实际数据。这些数据绝不会超过`LOBLKSIZE`字节，而且可能更少。

`pg_largeobject`的每一行保存一个大对象的一个页面， 从该对象内部的字节偏移(`pageno * LOBLKSIZE`)开始。这种实现允许松散的存储： 页面可以丢失，而且可以比`LOBLKSIZE`字节少(即使它们不是对象的最后一页)。 大对象内丢失的部分读做零。

上一页 | 起始页 | 下一页
`pg_language` | 上一级 | `pg_largeobject_metadata`