O catálogo pg_largeobject armazena os dados que constituem os "objetos grandes". O objeto grande é identificado por um OID atribuído ao mesmo quando de sua criação. Cada objeto grande é fracionado em segmentos, ou "páginas", pequenos o suficiente para serem convenientemente armazenados como linhas na catálogo pg_largeobject. A quantidade de dados por página é definida como sendo LOBLKSIZE (que atualmente é BLCKSZ/4 ou, tipicamente, 2 kB).
Tabela 42-19. Colunas de pg_largeobject
Nome | Tipo | Referencia | Descrição |
---|---|---|---|
loid | oid | Identificador do objeto grande que inclui esta página | |
pageno | int4 | Número de página desta página dentro do objeto grande (contado a partir de zero) | |
data | bytea | Dados realmente armazenados no objeto grande. Nunca mais de LOBLKSIZE bytes, podendo ser menos. |
Cada linha de pg_largeobject armazenas dados de uma página do objeto grande, começando pelo deslocamento de (pageno * LOBLKSIZE) bytes dentro do objeto. A implementação permite armazenamento esparso: podem estar faltando páginas, e as páginas podem ter menos que LOBLKSIZE bytes, mesmo que não seja a última página do objeto. As regiões faltando dentro do objeto grande são lidas como zeros.