大对象
一种特殊的数据类型,它提供对太大而无法作为一个整体操作的数据的流式访问
大对象
是一种特殊的数据类型,它提供对太大而无法作为一个整体操作的数据的流式访问。
与通过 TOAST 机制使用常规数据类型可用的最大 1GB 相比,大对象
最多可以包含 4TB 的数据。
用法
大对象
与普通数据库对象的不同之处在于,它们不是通过 SQL 命令操作的(所有权和权限元数据除外)。 相反,它们可以通过基于 libpq
的 API 上传、下载、修改和删除,该 API 也通过系统函数公开。
WAL 和复制
大对象
写入WAL,因此也通过流复制进行复制。
SQL 命令
系统函数
psql 命令
\lo_export
LOBOID 文件\lo_import
文件 [注释]\lo_list
(也实现为\dl
)\lo_unlink
LOBOID
Contrib 模块
系统目录关系
配置参数
更改历史记录
- PostgreSQL 18
- 添加了函数
has_largeobject_privilege()
(提交 4eada203)
- 添加了函数
- PostgreSQL 9.4
- PostgreSQL 9.0
- 添加了
ALTER LARGE OBJECT
命令(提交 f1325ce2) - 添加了
pg_largeobject_metadata
系统目录表(提交 f1325ce2) - 添加了
lo_compat_privileges
(提交 f1325ce2)
- 添加了
- PostgreSQL 8.4
- PostgreSQL 8.0
- 添加了对
COMMENT ON LARGE OBJECT
的支持(提交 42ce74bf)
- 添加了对
- PostgreSQL 6.5
- PostgreSQL 6.4
PostgreSQL 中一直存在大对象支持。
示例
postgres=# \lo_import /tmp/random-meme.jpg 'Some meme' lo_import 16458
postgres=# \dl Large objects ID | Owner | Description -------+----------+------------- 16458 | postgres | Some meme (1 row) postgres=# ALTER LARGE OBJECT 16458 OWNER TO lo_usr; ALTER LARGE OBJECT postgres=# \dl Large objects ID | Owner | Description -------+--------+------------- 16458 | lo_usr | Some meme (1 row) postgres=# \lo_unlink 16458 lo_unlink 16458 postgres=# \dl Large objects ID | Owner | Description ----+-------+------------- (0 rows)
参考
- PostgreSQL 文档: 大对象
友情链接
- PostgreSQL 中的 BLOB 清理 - CyberTec 2020 年 12 月的博客文章
- PostgreSQL TOAST 和使用 BLOB/CLOB 的说明 - EnterpriseDB 2019 年 11 月的教程
- 在 Postgres 中使用大对象 - Michael Paquier 2013 年 9 月的博客文章