32.2. 实现特点
大对象实现把大对象分解成"chunks",然后把块存放在数据库记录里面。 在随机读写时使用一个B-tree索引保证对正确的块(chunk)号的检索。
一个大对象的块存储不必相邻。 例如,如果应用程序打开一个新的大对象,寻找抵消1000000, 并且写入几个字节,这不会导致配置1000000个字节的存储;只有块覆盖真实写数据字节的范围。 一个读操作将,然而,读出先于最后出现块的任何未分配的位置为零。 这相当于在Unix文件系统文件中"不充分分配"文件的普通操作。
PostgreSQL 9.0中,大对象有一个所有者和一组访问权限, 使用GRANT和REVOKE管理。 SELECT
的权限需要读大对象,UPDATE
的权限需要写入或彻底删除。 只有大对象的所有者(或数据库超级用户)可以删除,评论或改变一个大对象的所有者。 为了调整以前版本的兼容操作,参阅lo_compat_privileges运行时参数。