32.2. Особенности реализации#
32.2. Особенности реализации #
Реализация больших объектов разбивает их на “части” и хранит эти части в строках базы данных. Индекс B-дерева обеспечивает быстрый поиск правильного номера части при выполнении случайного доступа для чтения и записи.
Все фрагменты, хранящиеся для больших объектов, не обязательно должны быть смежными. Например, если приложение открывает новый большой объект, перемещается на смещение 1000000 и записывает несколько байтов туда, это не приводит к выделению 1000000 байтов памяти; только фрагменты, покрывающие диапазон фактически записанных байтов данных. Однако операция чтения будет читать нули для любых не выделенных мест перед последним существующим фрагментом. Это соответствует общему поведению "разреженно выделенных" файлов в файловых системах Unix.
С PostgreSQL 9.0, у больших объектов есть владелец и набор прав доступа, которые можно управлять с помощью GRANT и REVOKE. Для чтения большого объекта требуются права SELECT
, а для записи или обрезки - права UPDATE
. Только владелец большого объекта (или суперпользователь базы данных) может удалить, прокомментировать или изменить владельца большого объекта. Чтобы изменить это поведение для совместимости с предыдущими версиями, см. параметр времени выполнения lo_compat_privileges.