12
Большие объекты
Преимущества
транзакционность, управление доступом
согласованность и долговечность больших данных
размер значения до 4 Тбайт
потоковое чтение и запись фрагментов значения
Недостатки
увеличение размера базы данных
меньшая скорость, чем при работе с файлами
специальный интерфейс
ограничение на количество больших объектов (2
32
)
риск появления осиротевших объектов
не поддерживается логической репликацией
Большие объекты наследуют те же преимущества и недостатки, что
и тип bytea, относительно хранения в файловой системе.
По сравнению с типом bytea у больших объектов есть преимущества.
Во-первых, размер одного объекта может достигать 4 Тбайт.
А во-вторых, интерфейс для работы с большими объектами позволяет
работать с произвольным фрагментом значения, а не со всем
значением целиком, как обычно происходит с TOAST.
С другой стороны, использование специального интерфейса делает
работу с большими объектами не такой удобной, как с чистым SQL.
К тому же драйвер PostgreSQL должен поддерживать этот интерфейс.
Идентификатор большого объекта хранится в 4-байтовом типе oid,
что ограничивает количество объектов в системе числом 4 294 967 296.
Таблицы TOAST тоже используют oid, но ограничение на количество
значений действует в пределах таблицы, а не на всю систему.
Кроме того, хранение всех больших объектов в отдельной таблице
увеличивает риск появления осиротевших объектов, на которые
не осталось ссылок в обычных таблицах. Для поиска и удаления
осиротевших объектов можно использовать утилиту vacuumlo, а для
предотвращения их появления — расширение lo.
Логическая репликация не поддерживает изменения в таблицах
системного каталога, в том числе в pg_largeobject, то есть большие
объекты не реплицируются.