2024 年 9 月 26 日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 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文件系统中的常见行为。

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

提交更正

如果您在文档中发现任何不正确的内容、与您对特定功能的体验不符或需要进一步说明,请使用 此表格 报告文档问题。