pg_largeobject
В каталоге pg_largeobject
хранятся данные, составляющие «большие объекты». Большой объект идентифицируется по OID, присвоенному при его создании. Каждый большой объект разбивается на сегменты или «страницы», достаточно маленькие, чтобы их можно было удобно хранить в виде строк в pg_largeobject
. Объем данных на странице определяется как LOBLKSIZE
(в настоящее время это BLCKSZ/4, или, как правило, 2 кБ).
До версии PostgreSQL 9.0 не существовало структуры разрешений, связанной с большими объектами. В результате pg_largeobject
была общедоступна для чтения и могла использоваться для получения OID (и содержимого) всех больших объектов в системе. Теперь это не так; для получения списка OID больших объектов используйте pg_largeobject_metadata.
Столбец | Тип данных | Описание |
---|---|---|
loid | oid (ссылается на pg_largeobject_metadata.oid) | Идентификатор большого объекта, который включает эту страницу |
pageno | int4 | Номер страницы этой страницы в пределах ее большого объекта (считая с нуля) |
data | bytea | Фактические данные, хранящиеся в большом объекте. Это никогда не будет больше, чем LOBLKSIZE байтов и может быть меньше |
Каждая строка pg_argeobject
содержит данные для одной страницы большого объекта, начиная с байтового смещения (pageno * LOBLKSIZE) внутри объекта. Реализация допускает разреженное хранение: страницы могут отсутствовать и быть короче LOBLKSIZE байт, даже если они не являются последней страницей объекта. Недостающие области в большом объекте читаются как нули.