2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

33.2. 实现特性 #

大型对象实现将大型对象分解成“”并在数据库的行中存储这些块。B树索引在进行随机访问读写时,可以保证快速地搜索到正确的块号。

为大型对象存储的块不必是连续的。例如,如果一个应用程序打开一个新的大型对象,将偏移量定位到 1000000,然后写入几个字节,这并不会导致分配 1000000 字节的存储空间;只分配覆盖实际写入数据字节范围的块。然而,读取操作将为最后一个已存在块之前的任何未分配位置读出零。这对应于 Unix 文件系统中“稀疏分配”文件的常见行为。Unix文件系统。

PostgreSQL 9.0 开始,大型对象有一个所有者和一组访问权限,可以使用 GRANTREVOKE 进行管理。读取大型对象需要 SELECT 权限,写入或截断它需要 UPDATE 权限。只有大型对象的所有者(或数据库超级用户)才能删除、注释或更改大型对象的所有者。要调整此行为以兼容早期版本,请参阅 lo_compat_privileges 运行时参数。

提交更正

如果您在文档中发现任何不正确之处、与您实际体验不符的内容或需要进一步澄清的地方,请使用 此表单 报告文档问题。