Chapter 29. 大对象

Table of Contents
29.1. 历史
29.2. 实现特点
29.3. 客户端接口
29.3.1. 创建大对象
29.3.2. 输入大对象
29.3.3. 输出大对象
29.3.4. 打开一个现有的大对象
29.3.5. 向大对象中写u乐平台登录注册
29.3.6. 从大对象中读取u乐平台登录注册
29.3.7. 大对象中u乐平台登录注册的查找
29.3.8. 获取一个大对象的当前搜索位置
29.3.9. 关闭一个大对象描述符
29.3.10. 删除一个大对象
29.4. 服务器端函数
29.5. 例子程序

PostgreSQL 有一个大对象设施, 它为存储在特殊的大对象结构里的用户u乐平台登录注册提供流状的访问方式。 流访问对那些u乐平台登录注册值太大,因而不能一次性操作的u乐平台登录注册是很有用的。

本章描述 PostgreSQL 大对象u乐平台登录注册的实现以及编程和查询语言接口。 我们在本章中使用 libpq 的 C 库作为例子, 但是大多数 PostgreSQL 内置的接口都支持等效的功能。 其它接口可以在内部使用大对象接口以提供对大对象值的一般性支持。那些内容没有在这里描述。

29.1. 历史

最初,PostgreSQL 4.2PostgreSQL 的间接前身)支持三种大对象的标准实现: 作为 POSTGRES服务器外部的文件扩展, 作为由 POSTGRES 管理的外部文件, 以及作为存储在 POSTGRES u乐平台登录注册库里面的u乐平台登录注册. 这样做容易导致用户的迷惑.结果是,我们只支持把大对象作为u乐平台登录注册存储在 PostgreSQL u乐平台登录注册库里. 即使这样做令u乐平台登录注册访问变得有些慢,但却保证了更严格的u乐平台登录注册完整性. 由于历史原因,这种存储机制被称为转置大对象. (我们将在本章中交互使用转置和大对象来表示同一个意思)。 自 PostgreSQL 7.1 开始,所由大对象都保留在一个叫pg_largeobject的系统表里.

PostgreSQL 7.1 引入了一种新的机制 (外号叫 "TOAST"), 允许u乐平台登录注册行远远大于单个u乐平台登录注册页面。这样就令大对象接口在一定程度上过时了。 大对象接口剩余的一个优点是它允许u乐平台登录注册最大有 2 G,而 TOAST 字段只能处理 1 G。 并且,大对象可以比普通u乐平台登录注册值更容易地一片片操作,因此,实际地局限是不一定的。