50.30. pg_largeobject#

50.30. pg_largeobject

50.30. pg_largeobject #

Каталог pg_largeobject содержит данные, составляющие большие объекты. Большой объект идентифицируется с помощью OID, назначаемого при его создании. Каждый большой объект разбивается на сегменты или страницы, достаточно маленькие для удобного хранения в виде строк в pg_largeobject. Количество данных на страницу определяется как LOBLKSIZE (который в настоящее время равен BLCKSZ/4, или обычно 2 кБ).

До версии PostgreSQL 9.0 не существовало структуры разрешений, связанной с большими объектами. В результате, pg_largeobject был доступен для чтения всем и мог использоваться для получения OID (и содержимого) всех больших объектов в системе. Это больше не так; используйте pg_largeobject_metadata для получения списка OID больших объектов.

Таблица 50.30. pg_largeobject Колонки

Тип столбца

Описание

loid oid (ссылается на pg_largeobject_metadata.oid)

Идентификатор большого объекта, который включает эту страницу

pageno int4

Номер страницы этой страницы внутри ее большого объекта (считая с нуля)

data bytea

Фактические данные хранятся в большом объекте. Это никогда не будет больше, чем LOBLKSIZE байтов и может быть меньше.


Каждая строка структуры pg_largeobject содержит данные для одной страницы большого объекта, начиная с байтового смещения (pageno * LOBLKSIZE) внутри объекта. Реализация позволяет разреженное хранение: страницы могут отсутствовать и могут быть короче, чем LOBLKSIZE байт, даже если они не являются последней страницей объекта. Прне указанные области внутри большого объекта считываются как нули.