Перейти к основному содержимому

pg_largeobject

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

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

СтолбецТип данныхОписание
loidoid (ссылается на pg_largeobject_metadata.oid)Идентификатор большого объекта, который включает эту страницу
pagenoint4Номер страницы этой страницы в пределах ее большого объекта (считая с нуля)
databyteaФактические данные, хранящиеся в большом объекте. Это никогда не будет больше, чем LOBLKSIZE байтов и может быть меньше

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