catalog-pg-largeobject.md 1.4 KB
Newer Older
李少辉-开发者's avatar
李少辉-开发者 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
## 52.30.`pg_largeobject`

[](<>)

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

在 PostgreSQL 9.0 之前,没有与大对象关联的权限结构。因此,`pg_largeobject`是公开可读的,可用于获取系统中所有大型对象的 OID(和内容)。这已不再是这种情况;采用[`pg_largeobject_metadata`](catalog-pg-largeobject-metadata.html)获取大对象 OID 的列表。

**表 52.30.`pg_largeobject`列**

| 列类型<br/><br/>描述 |
| --------------- |
| `样体` `样的`(参考[`pg_largeobject_metadata`](catalog-pg-largeobject-metadata.html).`样的`)<br/><br/>包含此页面的大对象的标识符 |
| `页面诺` `整数4`<br/><br/>此页面在其大对象中的页码(从零开始计数) |
| `数据` `拜茶`<br/><br/>存储在大对象中的实际数据。这永远不会超过`LOBLKSIZE`字节,可能会更少。 |

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