34.2. 实施功能

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

为大型对象存储的块不必是连续的。例如,如果一个应用程序打开一个新的大对象,试图偏移 1000000,然后在其中写入几个字节,则不会分配 1000000 字节的存储空间。仅覆盖实际写入的数据字节范围的块。但是,读取操作将为最后一个现有块之前的所有未分配位置读出零。这对应于 Unix 文件系统中“稀疏分配”文件的常见行为。

从 PostgreSQL 9.0 开始,大型对象具有所有者和一组访问权限,可以使用GRANTREVOKE进行 Management。读取大对象需要SELECT特权,而写入或截断它则需要UPDATE特权。只有大型对象的所有者(或数据库超级用户)才能删除,Comments 或更改大型对象的所有者。要调整此行为以使其与以前的发行版兼容,请参见lo_compat_privileges运行时参数。

上一章 首页 下一章