PostgreSQL
34.2. Implementation Features
The large object implementation breaks large objects up into “[.quote]#chunks”# and stores the chunks in rows in the database. A B-tree index guarantees fast searches for the correct chunk number when doing random access reads and writes.
The chunks stored for a large object do not have to be contiguous. For example, if an application opens a new large object, seeks to offset 1000000, and writes a few bytes there, this does not result in allocation of 1000000 bytes worth of storage; only of chunks covering the range of data bytes actually written. A read operation will, however, read out zeroes for any unallocated locations preceding the last existing chunk. This corresponds to the common behavior of “[.quote]#sparsely allocated”# files in Unix file systems.
As of PostgreSQL 9.0, large objects have an owner and a set of access permissions, which can be managed using GRANT and REVOKE. SELECT
privileges are required to read a large object, and UPDATE
privileges are required to write or truncate it. Only the large object’s owner (or a database superuser) can delete, comment on, or change the owner of a large object. To adjust this behavior for compatibility with prior releases, see the lo_compat_privileges run-time parameter.
Prev | Up | Next |
---|---|---|
34.1. Introduction |
34.3. Client Interfaces |
Copyright © 1996-2023 The PostgreSQL Global Development Group