O catálogo pg_largeobject contém
os dados que compõem “objetos grandes”.
Um objeto grande é identificado por um OID atribuído quando é criado.
Cada objeto grande é dividido em segmentos ou “páginas”
pequenos o suficiente para serem convenientemente armazenados como
linhas em pg_largeobject.
A quantidade de dados por página é definida como LOBLKSIZE
(que no momento é BLCKSZ/4, ou normalmente 2 kB).
Antes do PostgreSQL 9.0, não havia estrutura de permissão associada a objetos grandes. Como resultado, pg_largeobject era legível publicamente, podendo ser usado para obter os OIDs (e conteúdos) de todos os objetos grandes no sistema. Este não é mais o caso; deve ser usado pg_largeobject_metadata para obter uma lista de OIDs de objetos grandes.
Tabela 52.30. Colunas de pg_largeobject
Coluna Tipo de dados Descrição |
|---|
Identificador do objeto grande que inclui esta página |
Número da página dessa página dentro de seu objeto grande (contado a partir de zero) |
Dados reais armazenados no objeto grande.
Nunca será maior que |
Cada linha de pg_largeobject
contém dados para uma página de um objeto grande, começando no
deslocamento de bytes (pageno * LOBLKSIZE)
dentro do objeto.
A implementação permite armazenamento esparso: páginas podem estar
faltando e podem ser menores que LOBLKSIZE bytes,
mesmo que não sejam a última página do objeto.
Regiões ausentes em um objeto grande são lidas como zeros.
Veja também
Large Objects (Parte IV. Interfaces cliente)