×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.6.28. Функции системного администрирования

2.6.28.1. Функции для работы с параметрами конфигурации
2.6.28.2. Функции передачи сигналов серверу
2.6.28.3. Функции управления резервным копированием
2.6.28.4. Функции управления восстановлением
2.6.28.5. Функции синхронизации снимков
2.6.28.6. Функции управления репликацией
2.6.28.7. Функции управления объектами базы данных
2.6.28.8. Функции обслуживания индексов
2.6.28.9. Функции общего доступа к файлам
2.6.28.10. Функции рекомендательных блокировок

Функции, описанные в данном разделе, предназначены для управления и мониторинга СУБД Digital Q.DataBase.

2.6.28.1. Функции для работы с параметрами конфигурации #

Таблица 2.6.93 содержит описание функций, доступных для получения и изменения параметров конфигурации времени выполнения.

Таблица 2.6.93. Функции для работы с параметрами конфигурации

Функция

Описание

Примеры

current_setting ( setting_name text [, missing_ok boolean ] ) → text

Данная функция возвращает текущее значение параметра установки setting_name. Если указанная настройка отсутствует, current_setting функция возвращает ошибку за исключением случаев, когда missing_ok передан и соответствует true (в этом случае возвращается значение NULL). Данная функция соответствует с SQL команда SHOW.

current_setting('datestyle')ISO, MDY

set_config ( setting_name text, new_value text, is_local boolean ) → text

Устанавливает значение параметра setting_name в new_value, и возвращает полученное значение. Если is_local является true, новое значение будет применяться только в рамках текущей транзакции. Если требуется, чтобы новое значение действовало до завершения текущего сеанса, используйте false вместо этого. Данная функция соответствует команда языка SQL SET.

set_config('log_statement_stats', 'off', false)off


2.6.28.2. Функции передачи сигналов серверу #

Функции, представленные в Таблица 2.6.94 отправляют управляющие сигналы другим серверным процессам. По умолчанию использование данных функций разрешено только суперпользователям, однако доступ другим ролям может быть предоставлен с помощью команды GRANT, за указанными исключениями.

Каждая из этих функций возвращает значение true если сигнал был успешно отправлен, и false если отправить сигнал не удалось.

Таблица 2.6.94. Функции передачи сигналов серверу

Функция

Описание

pg_cancel_backend ( pid integer ) → boolean

Отменяет текущий запрос в сеансе, серверный процесс которого имеет указанный идентификатор процесса. Данная операция также разрешена, если вызывающая роль является членом роли, чей процесс сервера отменяется, или вызывающая роль обладает правами pg_signal_backend, однако отменять процессы суперпользователей могут только суперпользователи.

pg_log_backend_memory_contexts ( pid integer ) → boolean

Запрашивает вывод в журнал контекстов памяти серверного процесса с указанным идентификатором процесса. Данная функция может отправить запрос серверным и вспомогательным процессам, за исключением процесса logger. Данные контексты памяти будут фиксироваться с LOG уровнем важности сообщений. Они будут заноситься в журнал сервера согласно заданным параметрам конфигурации логирования (см. Раздел 3.4.8 для получения подробных сведений), но не будут передаваться клиенту независимо от client_min_messages.

pg_reload_conf () → boolean

Инициирует перезагрузку конфигурационных файлов для всех Digital Q.DataBase процессов сервера. (Данное действие выполняется посредством отправки SIGHUP сигнала процессу postmaster, который, в свою очередь, транслирует его SIGHUP каждому из своих дочерних процессов.) Можно использовать pg_file_settings, pg_hba_file_rules и pg_ident_file_mappings представления для проверки конфигурационных файлов на наличие ошибок перед выполнением перезагрузки.

pg_rotate_logfile () → boolean

Посылает менеджеру файлов журнала сигнал для переключения на новый файл вывода немедленно. Данная возможность работает только в том случае, если встроенный процесс сбора журналов запущен, так как в противном случае подпроцесс управления файлами журналов отсутствует.

pg_terminate_backend ( pid integer, время ожидания bigint DEFAULT 0 ) → boolean

Завершает сеанс, фоновый процесс которого имеет указанный идентификатор процесса. Данное действие также разрешено, если вызывающая роль является членом роли, чей фоновый процесс завершается, или вызывающая роль обладает привилегиями pg_signal_backend, однако завершать фоновые процессы суперпользователей могут только суперпользователи.

Если время ожидания не указано или равно нулю, эта функция возвращает значение true независимо от того, завершился ли процесс фактически или нет, указывая лишь на то, что отправка сигнала была успешной. Если время ожидания параметр указан (в миллисекундах) и его значение больше нуля, функция ожидает до тех пор, пока процесс не будет фактически завершен или пока не истечет заданное время. Если процесс завершен, функция возвращает true. При истечении времени ожидания выводится предупреждение и false возвращается значение.


pg_cancel_backend и pg_terminate_backend отправляет сигналы (SIGINT или SIGTERM соответственно) фоновым процессам, идентифицируемым по PID. Идентификатор активного фонового процесса можно получить из pid столбца pg_stat_activity представления или посредством вывода списка postgres процессов на сервере (с использованием команды ps в ОС Unix или Диспетчера задач в ОС Windows). Роль активного серверного процесса может быть получена из столбца usename столбца pg_stat_activity данного представления.

pg_log_backend_memory_contexts может использоваться для записи контекстов памяти серверного процесса в системный журнал. Например:

postgres=# SELECT pg_log_backend_memory_contexts(pg_backend_pid());
 pg_log_backend_memory_contexts
--------------------------------
 t
(1 строка)

В системный журнал будет выведено по одному сообщению для каждого контекста памяти. Пример:

LOG:  logging memory contexts of PID 10377
STATEMENT:  SELECT pg_log_backend_memory_contexts(pg_backend_pid());
LOG:  level: 0; TopMemoryContext: 80800 total in 6 blocks; 14432 free (5 chunks); 66368 used
LOG:  level: 1; pgstat TabStatusArray lookup hash table: 8192 total in 1 blocks; 1408 free (0 chunks); 6784 used
LOG:  level: 1; TopTransactionContext: 8192 total in 1 blocks; 7720 free (1 chunks); 472 used
LOG:  level: 1; RowDescriptionContext: 8192 total in 1 blocks; 6880 free (0 chunks); 1312 used
LOG:  level: 1; MessageContext: всего 16384 в 2 блоках; 5152 свободно (0 фрагментов); 11232 использовано
LOG:  уровень: 1; Кэш классов операторов: всего 8192 в 1 блоке; 512 свободно (0 фрагментов); 7680 использовано
LOG:  уровень: 1; Таблица отношений smgr: всего 16384 в 2 блоках; 4544 свободно (3 фрагмента); 11840 использовано
LOG:  уровень: 1; TransactionAbortContext: всего 32768 в 1 блоке; 32504 свободно (0 фрагментов); 264 использовано
...
LOG:  уровень: 1; ErrorContext: всего 8192 в 1 блоке; 7928 свободно (3 фрагмента); 264 использовано
LOG:  Общий итог: 1651920 байт в 201 блоке; 622360 свободно (88 фрагментов); 1029560 использовано

Если внутри одного родительского контекста содержится более 100 дочерних контекстов, в журнал записываются первые 100 дочерних контекстов и краткая сводка по остальным контекстам. Обратите внимание, что частые вызовы этой функции могут повлечь за собой значительные накладные расходы, поскольку это может привести к генерации большого количества сообщений журнала.

2.6.28.3. Функции управления резервным копированием #

Функции, представленные в Таблица 2.6.95 предназначены для создания оперативных резервных копий. Данные функции нельзя выполнять в процессе восстановления (за исключением pg_backup_start, pg_backup_stop, и pg_wal_lsn_diff).

Подробные сведения о надлежащем использовании этих функций приведены в Раздел 3.10.3.

Таблица 2.6.95. Функции управления резервным копированием

Функция

Описание

pg_create_restore_point ( name text ) → pg_lsn

Создает в журнале упреждающей записи (WAL) именованную запись-маркер, которая в дальнейшем может быть использована в качестве целевой точки восстановления, и возвращает соответствующую позицию в журнале WAL. Заданное имя может быть затем использовано с параметром recovery_target_name для указания точки, до которой будет выполняться восстановление. Следует избегать создания нескольких точек восстановления с одним и тем же именем, поскольку процесс восстановления остановится на первой найденной точке, имя которой совпадает с заданной целью восстановления.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_current_wal_flush_lsn () → pg_lsn

Возвращает текущую позицию сброса данных журнала упреждающей записи на диск (см. примечания ниже).

pg_current_wal_insert_lsn () → pg_lsn

Возвращает текущую позицию вставки в журнал упреждающей записи (см. примечания ниже).

pg_current_wal_lsn () → pg_lsn

Возвращает текущую позицию записи в журнал упреждающей записи (см. примечания ниже).

pg_backup_start ( label text [, fast boolean ] ) → pg_lsn

Подготавливает сервер к началу оперативного резервного копирования. Единственным обязательным параметром является произвольная пользовательская метка label для создаваемой копии. (Обычно это имя, под которым будет сохранен файл дампа резервной копии.) Если необязательный второй параметр задан как true, он предписывает выполнение операции pg_backup_start максимально быстро, насколько это возможно. Это вызывает немедленное выполнение контрольной точки (checkpoint), что приведет к скачку интенсивности операций ввода-вывода и замедлению всех параллельно выполняемых запросов.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_backup_stop ( [wait_for_archive boolean ] ) → record ( lsn pg_lsn, labelfile text, spcmapfile text )

Завершает процесс оперативного резервного копирования. Требуемое содержимое файла метки резервной копии и файла карты табличных пространств возвращается в качестве части Результат выполнения функции должен быть записан в файлы, расположенные в области резервного копирования. Данные файлы не должны записываться в рабочий каталог данных (несоблюдение этого правила приведет к невозможности перезапуска Digital Q.DataBase в случае сбоя системы).

Предусмотрен необязательный параметр типа boolean. Если параметр имеет значение false, функция завершит выполнение сразу после завершения резервного копирования, не дожидаясь завершения архивации файлов WAL. Данный алгоритм работы целесообразен только при использовании стороннего программного обеспечения, которое самостоятельно контролирует архивацию журналов WAL. В противном случае сегменты WAL, необходимые для обеспечения целостности резервной копии, могут отсутствовать, что сделает резервную копию бесполезной. По умолчанию или в случае, если данный параметр принимает значение true, pg_backup_stop система будет ожидать завершения архивации WAL (при условии, что архивирование включено). На резервном сервере (standby) это означает, что ожидание выполняется только тогда, когда параметр archive_mode = always. Если интенсивность операций записи на основном сервере невелика, может быть целесообразно выполнить функцию pg_switch_wal на основном сервере для принудительного немедленного переключения сегмента.)

При выполнении на основном сервере данная функция также создает файл истории резервного копирования в области архива журнала упреждающей записи. Файл истории содержит метку, присвоенную pg_backup_start, а также начальную и конечную позиции в журнале упреждающей записи для резервной копии, время начала и завершения резервного копирования. После фиксации конечной позиции текущая точка вставки в журнале упреждающей записи автоматически перемещается на следующий файл журнала, чтобы файл журнала, завершающий резервное копирование, мог быть немедленно заархивирован для его окончания.

Результатом работы функции является одна запись. Данный lsn столбец содержит конечную позицию резервной копии в журнале упреждающей записи (которую также можно игнорировать). Второй В данном столбце возвращается содержимое файла метки резервной копии, а в третьем столбце — содержимое файла карты табличных пространств. Эти файлы должны сохраняться в составе резервной копии, так как они необходимы для процесса восстановления.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_switch_wal () → pg_lsn

Данная функция принудительно переключает сервер на новый файл журнала упреждающей записи (WAL), что позволяет архивировать текущий файл (при условии использования режима непрерывного архивирования). Результатом является значение позиции в конце журнала упреждающей записи плюс 1 внутри только что завершенного файла журнала. Если с момента последнего переключения журналов активность в журнале упреждающей записи отсутствовала, pg_switch_wal функция не выполняет никаких действий и возвращает начальную позицию файла журнала упреждающей записи, используемого в настоящее время.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_walfile_name ( lsn pg_lsn ) → text

Функция преобразует позицию в журнале упреждающей записи в имя WAL-файла, содержащего данную позицию.

pg_walfile_name_offset ( lsn pg_lsn ) → record ( file_name text, file_offset integer )

Функция преобразует позицию в журнале упреждающей записи в имя WAL-файла и смещение в байтах внутри этого файла.

pg_split_walfile_name ( file_name text ) → record ( segment_number numeric, timeline_id bigint )

Функция извлекает порядковый номер и идентификатор временной шкалы из имени WAL-файла name.

pg_wal_lsn_diff ( lsn1 pg_lsn, lsn2 pg_lsn ) → numeric

Вычисляет разницу в байтах (lsn1 - lsn2) между двумя позициями в журнале предварительной записи (WAL). Данный результат может быть использован с pg_stat_replication или некоторыми функциями, указанными в Таблица 2.6.95 для для получения величины задержки репликации.


pg_current_wal_lsn отображает текущую позицию записи в журнале предварительной записи в том же формате, который используется вышеуказанными функциями. Аналогично, pg_current_wal_insert_lsn отображает текущую позицию вставки в журнале предварительной записи, а pg_current_wal_flush_lsn отображает текущую позицию сброса журнала предварительной записи на диск. Местом вставки является «логический» конечная точка журнала упреждающей записи (WAL) в произвольный момент времени, в то время как позиция записи (write location) представляет собой окончание данных, фактически выгруженных из внутренних буферов сервера, а позиция сброса (flush location) является последним местоположением, для которого подтверждена запись в энергонезависимое хранилище. Позиция записи является пределом того, что может быть проверено извне сервера; как правило, именно это значение необходимо, если требуется архивация частично заполненных файлов журнала предварительной записи. Сведения о позициях вставки и сброса данных на диск предоставляются преимущественно для отладки сервера. Все эти операции предназначены только для чтения и не требуют прав суперпользователя.

Для извлечения pg_walfile_name_offset соответствующего имени файла журнала упреждающей записи и смещения в байтах из значения типа pg_lsn можно использовать функцию. Например:

postgres=# SELECT * FROM pg_walfile_name_offset((pg_backup_stop()).lsn);
        file_name         | file_offset
--------------------------+-------------
 00000001000000000000000D |     4039624
(1 row)

Аналогично, функция pg_walfile_name извлекает только имя файла журнала упреждающей записи.

pg_split_walfile_name позволяет вычислить значение типа LSN на основе смещения в файле и имени WAL-файла, например:

postgres=# \set file_name '000000010000000100C000AB'
postgres=# \set offset 256
postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset AS lsn
  FROM pg_split_walfile_name(:'file_name') pd,
       pg_show_all_settings() ps
  WHERE ps.name = 'wal_segment_size';
      lsn
---------------
 C001/AB000100
(1 row)

2.6.28.4. Функции управления восстановлением #

Функции, представленные в Таблица 2.6.96 предоставляют информацию о текущем состоянии резервного сервера. Данные функции могут выполняться как в процессе восстановления, так и в штатном режиме работы.

Таблица 2.6.96. Функции получения информации о восстановлении

Функция

Описание

pg_is_in_recovery () → boolean

Возвращает логическое значение true, если процесс восстановления продолжается.

pg_last_wal_receive_lsn () → pg_lsn

Возвращает последнюю позицию в журнале предзаписи (WAL), которая была получена и записана на диск при помощи потоковой репликации. В процессе выполнения потоковой репликации данное значение монотонно увеличивается. Если восстановление завершено, значение фиксируется на позиции последней записи WAL, полученной и синхронизированной с диском в ходе восстановления. Если потоковая репликация отключена или еще не запущена, функция возвращает NULL.

pg_last_wal_replay_lsn () → pg_lsn

Возвращает последнюю позицию в журнале предзаписи (WAL), которая была воспроизведена в процессе восстановления. Если восстановление продолжается, это значение будет монотонно увеличиваться. Если процесс восстановления завершен, данное значение останется неизменным в позиции последней записи WAL, примененной во время восстановления. Если сервер был запущен в штатном режиме без проведения восстановления, функция возвращает значение NULL.

pg_last_xact_replay_timestamp () → timestamp with time zone

Функция возвращает метку времени последней транзакции, воспроизведенной в процессе восстановления. Данный параметр представляет собой время формирования записи WAL о фиксации (commit) или отмене (abort) этой транзакции на основном сервере. Если в процессе восстановления транзакции не воспроизводились, функция возвращает NULL. В противном случае, если восстановление все еще выполняется, это значение будет монотонно возрастать. Если восстановление завершено, то данное значение останется статичным и будет соответствовать времени последней транзакции, примененной в процессе восстановления. Если сервер был запущен в штатном режиме без восстановления, функция возвращает NULL.

pg_get_wal_resource_managers () → setof record ( rm_id integer, rm_name text, rm_builtin boolean )

Функция возвращает список загруженных в систему менеджеров ресурсов WAL. В столбце rm_builtin указывается, является ли это встроенный менеджер ресурсов или пользовательский менеджер ресурсов, загружаемый расширением.


Функции, представленные в Таблица 2.6.97 управляют ходом процесса восстановления. Данные функции могут быть выполнены только во время восстановления.

Таблица 2.6.97. Функции управления восстановлением

Функция

Описание

pg_is_wal_replay_paused () → boolean

Возвращает логическое значение true, если запрошена приостановка восстановления.

pg_get_wal_replay_pause_state () → text

Возвращает состояние приостановки восстановления. Возвращаемыми значениями являются: not paused если приостановка не была запрошена, pause requested если приостановка запрошена, но восстановление еще не приостановлено, и paused если восстановление фактически приостановлено.

pg_promote ( wait boolean DEFAULT true, wait_seconds integer DEFAULT 60 ) → boolean

Переводит резервный сервер в статус основного (primary). Если параметр wait установлен в значение true (параметр по умолчанию), функция ожидает завершения процесса продвижения или wait_seconds секунд, а также возвращает true если продвижение завершилось успешно и false в противном случае. Если wait установлено значение false, а также функция возвращает значение true сразу после отправки SIGUSR1 сигнала процессу postmaster для инициирования продвижения сервера.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_wal_replay_pause () → void

Запрос на приостановку процесса восстановления. Наличие запроса не означает, что восстановление будет остановлено немедленно. Для получения гарантии того, что процесс восстановления действительно приостановлен, необходимо проверить состояние приостановки восстановления, возвращаемое функцией pg_get_wal_replay_pause_state(). Следует отметить, что функция pg_is_wal_replay_paused() лишь сообщает, был ли сформирован запрос на приостановку. Пока восстановление находится на паузе, никакие последующие изменения к базе данных не применяются. Если активен режим горячего резерва (hot standby), то для всех новых запросов будет доступен один и тот же согласованный снимок базы данных, и новые конфликты запросов не будут возникать до момента возобновления восстановления.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_wal_replay_resume () → void

Функция возобновляет восстановление, если оно было приостановлено.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.


pg_wal_replay_pause и pg_wal_replay_resume не может быть выполнена во время процесса продвижения узла (promotion). Если процедура продвижения инициируется во время приостановки восстановления, состояние приостановки завершается и продвижение продолжается.

Если потоковая репликация отключена, состояние приостановки может продолжаться неопределенно долго без возникновения ошибок. Если выполняется потоковая репликация, то записи WAL будут приниматься по-прежнему; это со временем приведет к заполнению дискового пространства в зависимости от длительности паузы, интенсивности генерации WAL и объема доступного места на диске.

2.6.28.5. Функции синхронизации снимков #

Digital Q.DataBase позволяет сеансам базы данных синхронизировать свои снимки. snapshot определяет, какие данные будут видимы для транзакции, использующей данный снимок. Синхронизированные снимки необходимы в тех случаях, когда двум или более сеансам требуется обращаться к идентичному содержимому базы данных. Если два сеанса начинают свои транзакции независимо друг от друга, всегда существует вероятность того, что некоторая третья транзакция будет зафиксирована в промежутке между выполнением этих двух START TRANSACTION команд, вследствие чего один сеанс увидит результаты этой транзакции, а другой — нет.

Для решения данной проблемы Digital Q.DataBase позволяет транзакции экспортировать используемый ею снимок данных. Пока экспортирующая транзакция остается открытой, другие транзакции могут импортировать ее снимок, что гарантирует получение ими того же самого состояния базы данных, которое видит первая транзакция. Однако следует учитывать, что любые изменения в базе данных, внесенные любой из этих транзакций, остаются невидимыми для других транзакций, что является стандартным поведением для незафиксированных транзакций. Таким образом, транзакции синхронизируются относительно ранее существовавших данных, но функционируют в обычном режиме в отношении изменений, вносимых ими самими.

Снимки данных экспортируются при помощи pg_export_snapshot функции, приведенной в Таблица 2.6.98, и импортированных с помощью SET TRANSACTION команды.

Таблица 2.6.98. Функции синхронизации снимков

Функция

Описание

pg_export_snapshot () → text

Функция сохраняет текущий снимок состояния транзакции и возвращает запроса text идентифицирующую его строку. Данную строку необходимо передать (вне базы данных) клиентам, которым требуется импортировать этот снимок. Снимок доступен для импорта только до момента завершения экспортировавшей его транзакции.

При необходимости транзакция может экспортировать несколько снимков. Следует учитывать, что выполнение данной операции целесообразно только в READ COMMITTED транзакциях, так как на REPEATABLE READ и более высоких уровнях изоляции транзакции используют один и тот же снимок на протяжении всего своего времени существования. Если транзакция экспортировала один или несколько снимков, она не может быть подготовлена к фиксации с помощью команды PREPARE TRANSACTION.

pg_log_standby_snapshot () → pg_lsn

Создает снимок активных транзакций и записывает его в лог WAL без необходимости ожидания записи данных процессами фоновой записи (bgwriter) или контрольной точки (checkpointer). Данная операция полезна для логического декодирования на резервном сервере, так как создание логического слота требует воспроизведения соответствующей записи на этом сервере.


2.6.28.6. Функции управления репликацией #

Функции, представленные в Таблица 2.6.99 используются для управления механизмами репликации и взаимодействия с ними. См. Раздел 3.11.2.5, Раздел 3.11.2.6, и Глава 5.13 для получения сведений о соответствующих базовых возможностях. Использование функций для управления источниками репликации по умолчанию разрешено только суперпользователю, но доступ к ним может быть предоставлен и другим пользователям с помощью GRANT команды. Использование функций для работы со слотами репликации ограничено правами суперпользователя и пользователей с атрибутом REPLICATION привилегии.

Многие из данных функций имеют эквивалентные команды в протоколе репликации; см. Раздел 7.4.4.

Функции, описание которых приведено в Раздел 2.6.28.3, Раздел 2.6.28.4, и Раздел 2.6.28.5 также имеют отношение к репликации.

Таблица 2.6.99. Функции управления репликацией

Функция

Описание

pg_create_physical_replication_slot ( slot_name name [, immediately_reserve boolean, temporary boolean ] ) → record ( slot_name name, lsn pg_lsn )

Создает новый физический слот репликации с именем slot_name. Второй необязательный параметр, в случае, true, указывает, что LSN для данного слот репликации должен быть зарезервирован немедленно; в противном случае слот с LSN резервируется при первом подключении клиента потоковой репликации. Потоковая передача изменений из физического слота репликации возможна только при использовании протокола потоковой репликации — см. Раздел 7.4.4. Необязательный третий параметр, temporary, если для него установлено значение true, указывает, что слот не должен сохраняться на диске на постоянной основе и предназначен только для использования в рамках текущего сеанса. Временные слоты также освобождаются при возникновении любой ошибки. Данная функция соответствует команде протокола репликации CREATE_REPLICATION_SLOT ... PHYSICAL.

pg_drop_replication_slot ( slot_name name ) → void

Удаляет физический или логический слот репликации с именем slot_name. Аналогично протоколу репликации команда DROP_REPLICATION_SLOT. Для логических слотов данную функцию необходимо вызывать при подключении к той же базе данных, в которой был создан этот слот.

pg_create_logical_replication_slot ( slot_name name, плагин name [, temporary boolean, двухфазный boolean, failover boolean ] ) → record ( slot_name name, lsn pg_lsn )

Создает новый логический слот репликации (декодирования) с именем slot_name используя плагин вывода плагин. Необязательный третий параметр, temporary, если для него установлено значение true, указывает, что слот не должен сохраняться на диске на постоянной основе и предназначен только для использования в рамках текущего сеанса. Временные слоты также освобождаются при возникновении любой ошибки. Четвертый необязательный параметр, двухфазныйпри значении true указывает, что для данного слота включено декодирование подготовленных транзакций слота. Пятый необязательный параметр, failoverпри значении true, указывает, что для данного слота разрешена синхронизация с резервными серверами (standby) для возобновления логической репликации после отказоустойчивость. Вызов этой функции дает тот же результат, что и команда протокола репликации CREATE_REPLICATION_SLOT ... LOGICAL.

pg_copy_physical_replication_slot ( src_slot_name name, dst_slot_name name [, temporary boolean ] ) → record ( slot_name name, lsn pg_lsn )

Копирует существующий слот физической репликации с именем src_slot_name в новый слот физической репликации с именем dst_slot_name. Скопированный физический слот начинает резервировать журналы WAL с той же позиции, что и LSN в качестве исходный слот. temporary является необязательным параметром. Если параметр temporary опущен, используется то же значение, что и в исходном слоте.

pg_copy_logical_replication_slot ( src_slot_name name, dst_slot_name name [, temporary boolean [, плагин name ]] ) → record ( slot_name name, lsn pg_lsn )

Копирует существующий слот логической репликации с именем src_slot_name в новый слот логической репликации с именем dst_slot_name, при этом допускается изменение модуля вывода и параметра постоянства (persistence). Работа скопированного логического слота начинается с той же позиции, LSN что и у исходного логического слота. Оба temporary и плагин считаются необязательно; если данные параметры опущены, используются значения исходного слота.

pg_logical_slot_get_changes ( slot_name name, upto_lsn pg_lsn, upto_nchanges integer, VARIADIC options text[] ) → setof record ( lsn pg_lsn, xid xid, data text )

Функция возвращает изменения в слоте slot_name, начиная с того момента, когда изменения были считаны в последний раз. Если upto_lsn и upto_nchanges имеют значение NULL, логическое декодирование будет продолжаться до конца WAL. Если upto_lsn имеет значение не NULL, декодирование будет включать только те транзакции, фиксация которых произошла до указанного LSN. Если upto_nchanges имеет значение не NULL, процесс декодирования будет остановлен, когда количество строк, сформированных при декодировании, превысит заданное значение. Однако следует отметить, что фактическое количество возвращаемых строк может быть больше, так как данное ограничение проверяется только после добавления строк, полученных при декодировании фиксации каждой новой транзакции. Если указанный слот является логическим слотом для отработки отказа, то данная функция не завершит выполнение до тех пор, пока все физические слоты, указанные в synchronized_standby_slots не подтвердят получение WAL.

pg_logical_slot_peek_changes ( slot_name name, upto_lsn pg_lsn, upto_nchanges integer, VARIADIC options text[] ) → setof record ( lsn pg_lsn, xid xid, data text )

Функция работает аналогично с pg_logical_slot_get_changes() функции, за исключением того, что изменения не поглощаются; то есть они будут возвращены повторно при последующих вызовах.

pg_logical_slot_get_binary_changes ( slot_name name, upto_lsn pg_lsn, upto_nchanges integer, VARIADIC options text[] ) → setof record ( lsn pg_lsn, xid xid, data bytea )

Функция работает аналогично с pg_logical_slot_get_changes() функции, за исключением того, что изменения возвращаются в виде bytea.

pg_logical_slot_peek_binary_changes ( slot_name name, upto_lsn pg_lsn, upto_nchanges integer, VARIADIC options text[] ) → setof record ( lsn pg_lsn, xid xid, data bytea )

Функция работает аналогично с pg_logical_slot_peek_changes() функции, за исключением того, что изменения возвращаются в виде bytea.

pg_replication_slot_advance ( slot_name name, upto_lsn pg_lsn ) → record ( slot_name name, end_lsn pg_lsn )

Функция перемещает вперед текущую подтвержденную позицию слота репликации с именем slot_name. Позиция слота не может быть перемещена назад, и она не может быть перемещена за пределы текущего местоположения вставки. Функция возвращает имя слота и фактическую позицию, на которую он был перемещен. Информация об обновленной позиции слота записывается при выполнении следующей контрольной точки, если было произведено перемещение вперед. Следовательно, в случае аварийного завершения работы слот может вернуться к более ранней позиции. Если указанный слот является логическим слотом для отработки отказа, выполнение функции не будет завершено до тех пор, пока все физических слотов, указанных в synchronized_standby_slots не подтвердят получение WAL.

pg_replication_origin_create ( node_name text ) → oid

Создает источник репликации с заданным внешним именем и возвращает назначенный ему внутренний идентификатор.

pg_replication_origin_drop ( node_name text ) → void

Удаляет ранее созданный источник репликации, включая весь связанный с ним прогресс воспроизведения.

pg_replication_origin_oid ( node_name text ) → oid

Выполняет поиск источника репликации по имени и возвращает внутренний идентификатор. Если такой источник репликации не найден, NULL не строка JSON.

pg_replication_origin_session_setup ( node_name text ) → void

Помечает текущий сеанс как выполняющий воспроизведение из заданного источника, что позволяет отслеживать прогресс воспроизведения. Может использоваться только в том случае, если в данный момент ни один источник не выбран. Используйте pg_replication_origin_session_reset для отмены.

pg_replication_origin_session_reset () → void

Отменяет действие функции из pg_replication_origin_session_setup().

pg_replication_origin_session_is_setup () → boolean

Возвращает логическое значение true, если в текущем сеансе был выбран источник репликации.

pg_replication_origin_session_progress ( flush boolean ) → pg_lsn

Возвращает позицию воспроизведения для источника репликации, выбранного в текущего сеанса. Данный параметр flush определяет, будет ли запись о соответствующей локальной транзакции гарантированно сброшена на диск.

pg_replication_origin_xact_setup ( origin_lsn pg_lsn, origin_timestamp timestamp with time zone ) → void

Помечает текущую транзакцию как воспроизведение транзакции, которая была зафиксирована с указанными LSN LSN и меткой времени. Данная функция может быть вызвана только после выбора источника репликации. с использованием pg_replication_origin_session_setup.

pg_replication_origin_xact_reset () → void

Отменяет результаты работы функции pg_replication_origin_xact_setup().

pg_replication_origin_advance ( node_name text, lsn pg_lsn ) → void

Устанавливает прогресс репликации для указанного узла в заданную позицию. Это в первую очередь полезно для задания начальной позиции или установки новой позиции после изменения конфигурации и других подобных операций. Следует учитывать, что неосторожное использование функции может привести к нарушению целостности реплицируемых данных.

pg_replication_origin_progress ( node_name text, flush boolean ) → pg_lsn

Возвращает позицию воспроизведения для указанного источника репликации. Параметр аргумента flush определяет, будет ли для соответствующей локальной транзакции гарантирован сброс на диск или нет.

pg_logical_emit_message ( transactional boolean, prefix text, content text [, flush boolean DEFAULT false] ) → pg_lsn

pg_logical_emit_message ( transactional boolean, prefix text, content bytea [, flush boolean DEFAULT false] ) → pg_lsn

Формирует сообщение логического декодирования. Данная функция может использоваться для передачи общих сообщений плагинам логического декодирования через журнал WAL. transactional Параметр определяет, должно ли сообщение быть частью текущей транзакции или оно должно быть записано немедленно и декодировано сразу после того, как декодер прочитает соответствующую запись. prefix Параметр представляет собой текстовый префикс, используемый плагинами логического декодирования для идентификации интересующих их сообщений. Данный content Параметр содержит содержимое сообщения, представленное в текстовом или двоичном виде. Данный flush параметр (по умолчанию установлен в значение false) определяет, будет ли сообщение немедленно сброшено в журнал WAL или нет. flush не имеет эффекта с transactional, так как запись сообщения в журнале WAL сбрасывается на диск вместе с соответствующей транзакцией.

pg_sync_replication_slots () → void

Синхронизация логических слотов репликации для отработки отказа с основного сервера на резервный сервер. Данная функция может быть выполнена только на резервном сервере. Временные синхронизированные слоты, если таковые имеются, не могут быть использованы для логического декодирования и должны быть удалены после перевода сервера в основной режим. См. Раздел 5.12.2.3 для получения подробных сведений. Обратите внимание, что выполнение данной функции невозможно, если sync_replication_slots активировано и фоновый процесс slotsync уже запущен для выполнения синхронизации слотов.

Внимание

Если после выполнения функции параметр hot_standby_feedback будет отключен на резервном сервере или физический слот, настроенный в параметре primary_slot_name не будет удален, то возможно, что необходимые строки синхронизированный слот будет удален процессом VACUUM на основном сервере, что приведет к аннулированию данного синхронизированного слота.


2.6.28.7. Функции управления объектами базы данных #

Функции, представленные в Таблица 2.6.100 вычисляют объем дискового пространства, занимаемого объектами базы данных, либо помогают в представлении или анализе результатов использования ресурсов. bigint результаты измеряются в байтах. Если одной из этих функций передается идентификатор OID, не соответствующий ни одному из существующих объектов, NULL возвращается значение NULL.

Таблица 2.6.100. Функции определения размера объектов базы данных

Функция

Описание

pg_column_size ( "any" ) → integer

Возвращает количество байтов, используемых для хранения отдельного значения данных. Если функция применяется непосредственно к значению столбца таблицы, учитывается выполненное сжатие данных.

pg_column_compression ( "any" ) → text

Определяет алгоритм сжатия, который применялся для сжатия отдельного значения переменной длины. Возвращает NULL если значение не является сжатым.

pg_column_toast_chunk_id ( "any" ) → oid

Показывает chunk_id для хранящегося на диске TOAST-значения. Возвращает NULL если значение не сжа-TOASTто или не находится на диске. См. Раздел 7.15.2 для получения дополнительной информации о TOAST.

pg_database_size ( name ) → bigint

pg_database_size ( oid ) → bigint

Вычисляет общий объем дискового пространства, занимаемого базой данных с указанным именем или OID. Для использования данной функции необходимо иметь CONNECT привилегию CONNECT для указанной базы данных (которая предоставляется по умолчанию) или обладать правами с pg_read_all_stats роли.

pg_indexes_size ( regclass ) → bigint

Вычисляет общий объем дискового пространства, занимаемого всеми индексами указанной таблицы.

pg_relation_size ( relation regclass [, слой text ] ) → bigint

Вычисляет объем дискового пространства, занимаемого одним «слой» из слоев указанного отношения. (Обратите внимание: в большинстве случаев удобнее использовать высокоуровневые функции pg_total_relation_size или pg_table_size, которые суммируют размеры всех слоев.) При вызове с одним аргументом функция возвращает размер основного слоя данных отношения. Второй аргумент может быть указан для выбора исследуемого слоя:

  • main возвращает размер основного слоя данных отношения.

  • fsm возвращает размер карты свободного пространства (Free Space Map) (см. Раздел 7.15.3), связанной с отношением.

  • vm возвращает размер карты видимости (Visibility Map) (см. Раздел 7.15.4), связанной с отношением.

  • init возвращает размер слоя инициализации (при его наличии), связанного с отношением.

pg_size_bytes ( text ) → bigint

Преобразует значение размера из человекочитаемого формата (в виде, возвращаемом с помощью pg_size_pretty) в байты. Допустимыми единицами измерения являются байты, B, кБ, МБ, ГБ, ТБ, и ПБ.

pg_size_pretty ( bigint ) → text

pg_size_pretty ( numeric ) → text

Преобразует значение размера в байтах в формат, более удобный для чтения пользователем, с использованием единиц измерения (байты, кБ, МБ, ГБ, ТБ или ПБ в зависимости от ситуации). Обратите внимание, что единицы измерения представляют собой степени 2, а не степени 10, поэтому 1 кБ равен 1024 байтам, 1 МБ равен 10242 = 1048576 байтам и так далее.

pg_table_size ( regclass ) → bigint

Вычисляет объем дискового пространства, занимаемого указанной таблицей, без учета индексов (но включая ее таблицу TOAST, если таковая имеется, а также карту свободного пространства и карту видимости).

pg_tablespace_size ( name ) → bigint

pg_tablespace_size ( oid ) → bigint

Вычисляет общий объем дискового пространства, используемого в табличном пространстве с указанным именем или OID. Для вызова данной функции необходимо иметь иметь CREATE привилегию в указанном табличном пространстве или обладать правами pg_read_all_stats роли, если только оно не является табличным пространством по умолчанию для текущей базы данных.

pg_total_relation_size ( regclass ) → bigint

Данная функция вычисляет общий объем дискового пространства, занимаемого указанной таблицей, включая все индексы и TOAST данные TOAST. Полученный результат эквивалентен значению pg_table_size + pg_indexes_size.


Вышеперечисленные функции, работающие с таблицами или индексами, принимают аргумент типа regclass аргумент, представляющий собой OID таблицы или индекса в pg_class системном каталоге. При этом выполнять поиск OID вручную не требуется, поскольку regclass входной преобразователь данного типа данных выполнит эту операцию автоматически. Подробности см. в Раздел 2.5.19 для получения детальной информации.

Функции, представленные в Таблица 2.6.101 помогают идентифицировать конкретные файлы на диске, связанные с объектами базы данных.

Таблица 2.6.101. Функции определения местоположения объектов базы данных

Функция

Описание

pg_relation_filenode ( relation regclass ) → oid

Данная функция возвращает «filenode» номер, назначенный в данный момент для указанного отношения. Параметр filenode является базовым компонентом имен файлов, используемых для данного отношения (см. Раздел 7.15.1 для получения дополнительной информации). Для большинства отношений результат идентичен значению pg_class.relfilenode, но для некоторых системных каталогов relfilenode равно нулю, и для получения корректного значения необходимо использовать данную функцию. Данная функция возвращает NULL, если ей передано отношение, не имеющее хранилища, например, представление.

pg_relation_filepath ( relation regclass ) → text

Функция возвращает полный путь к файлу (относительно каталога данных кластера базы данных, PGDATA) указанного отношения.

pg_filenode_relation ( tablespace oid, filenode oid ) → regclass

Функция возвращает OID отношения по заданным OID табличного пространства и файловому узлу (filenode), в котором оно хранится. Эта операция по сути является обратным преобразованием для pg_relation_filepath. Для отношения в табличном пространстве базы данных по умолчанию в качестве значения табличного пространства можно указать ноль. Возвращает значение NULL если ни одно отношение в текущей базе данных не связано с указанными значениями.


Таблица 2.6.102 содержит список функций, используемых для управления правилами сортировки.

Таблица 2.6.102. Функции управления правилами сортировки

Функция

Описание

pg_collation_actual_version ( oid ) → text

Функция возвращает актуальную версию объекта правила сортировки в том виде, в котором она представлена в данный момент установленных в операционной системе. Если данное значение отличается от значения в поле pg_collation.collversion, то объекты, зависящие от этого правила сортировки, может потребоваться пересоздать. См. также ALTER COLLATION.

pg_database_collation_actual_version ( oid ) → text

Возвращает текущую фактическую версию правила сортировки базы данных установленных в операционной системе. Если данное значение отличается от значения в поле pg_database.datcollversion, то объекты, зависящие от этого правила сортировки, может потребоваться пересоздать. См. также ALTER DATABASE.

pg_import_system_collations ( схема regnamespace ) → integer

Добавляет правила сортировки в системный каталог pg_collation на основе всех локалей, обнаруженных в операционной системе. Именно эти данные использует initdb утилита; см. Раздел 3.8.2.2 для получения дополнительной информации. Если новые локали будут установлены в операционную систему позднее, данная функция может быть вызвана повторно для добавления правил сортировки для новых локалей. Локали, соответствующие существующим записям, в pg_collation будут пропущены. (Однако объекты правил сортировки на основе локалей, которые более не представлены в операционной системе, данной функцией не удаляются.) Данный схема параметр обычно должен быть pg_catalog, однако это не является обязательным требованием; эти правила сортировки могут быть также установлены в другие схемы. Данная функция возвращает количество созданных ею новых объектов правил сортировки. Использование данной функции разрешено только суперпользователям.


Таблица 2.6.103 перечислены функции, предоставляющие сведения о структуре секционированных таблиц.

Таблица 2.6.103. Функции получения сведений о секционировании

Функция

Описание

pg_partition_tree ( regclass ) → setof record ( relid regclass, parentrelid regclass, isleaf boolean, level integer )

Выводит список таблиц или индексов в дереве секций указанной секционированной таблицы или секционированного индекса, по одной строке для каждой секции. Предоставляемая информация включает в себя идентификатор OID данной секции, идентификатор OID её непосредственного родителя, логическое значение, указывающее, является ли данная секция листовой, а также целое число, обозначающее её уровень в иерархии. Значение уровня равно 0 для входной таблицы или индекса, 1 — для её непосредственных дочерних секций, 2 — для их секций и так далее. Функция не возвращает строк, если отношение не существует, не является секцией или секционированной таблицей.

pg_partition_ancestors ( regclass ) → setof regclass

Выводит список отношений-предков для заданной секции, включая само отношение. Функция не возвращает строк, если отношение не существует, не является секцией или секционированной таблицей.

pg_partition_root ( regclass ) → regclass

Возвращает самый верхний родительский элемент дерева секций, к которому принадлежит данное отношение. Возвращает NULL если отношение не существует, не является секцией или секционированной таблицей.


Например, для проверки общего объёма данных, содержащихся в секционированной таблице measurement, можно использовать следующий запрос:

SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
  FROM pg_partition_tree('measurement');

2.6.28.8. Функции обслуживания индексов #

Таблица 2.6.104 содержит описание функций, доступных для выполнения задач по обслуживанию индексов. (Обратите внимание: данные задачи по обслуживанию обычно выполняются автоматически процессом autovacuum; использование этих функций требуется только в особых случаях). Данные функции нельзя выполнять во время восстановления. Использование этих функций разрешено только суперпользователям и владельцу указанного индекса.

Таблица 2.6.104. Функции обслуживания индексов

Функция

Описание

brin_summarize_new_values ( индекс regclass ) → integer

Сканирует указанный индекс типа BRIN для поиска диапазонов страниц в базовой таблице, которые в данный момент не охвачены сводкой в индексе; для каждого такого диапазона функция создает новую запись сводного индекса путем сканирования этих страниц таблицы. Возвращает количество добавленных в индекс новых сводных данных по диапазонам страниц.

brin_summarize_range ( индекс regclass, blockNumber bigint ) → integer

Формирует сводную информацию о диапазоне страниц, включающем заданный блок, если она еще не была сформирована. Данная функция аналогична аналогично функции brin_summarize_new_values за исключением того, что она обрабатывает только диапазон страниц, охватывающий указанный номер блока таблицы.

brin_desummarize_range ( индекс regclass, blockNumber bigint ) → void

Удаляет кортеж индекса BRIN, обобщающий диапазон страниц, в который входит заданный блок таблицы, если он существует.

gin_clean_pending_list ( индекс regclass ) → bigint

Очищает «список ожидающих записей» указанного индекса GIN посредством массового переноса записей из него в основную структуру данных GIN. Возвращает количество страниц, удаленных из списка ожидающих записей. Если аргумент функции — индекс GIN, созданный с с fastupdate отключенным параметром, очистка не выполняется и возвращается нулевое значение, так как у данного индекса нет списка ожидающих записей. См. Раздел 7.14.4.4.1 и Раздел 7.14.4.5 для получения подробных сведений о списке ожидающих записей и fastupdate параметре.


2.6.28.9. Функции общего доступа к файлам #

Функции, представленные в Таблица 2.6.105 обеспечивают нативный доступ к файлам на хост-машине сервера. Только файлы внутри каталога кластера базы данных и log_directory , за исключением случаев, когда пользователь является суперпользователем или ему назначена роль pg_read_server_files. Используйте относительный путь для файлов внутри каталога кластера и путь, соответствующий log_directory параметр конфигурации для журнальных файлов.

Обратите внимание, что предоставление пользователям привилегии EXECUTE на pg_read_file(), или на связанные с ней функции, дает им возможность считывать любые файлы на сервере, которые доступны для чтения процессу сервера базы данных; данные функции позволяют обойти все внутренние проверки привилегий базы данных. Это означает, что, например, пользователь с таким уровнем доступа получает возможность прочитать содержимое pg_authid таблицы, в которой хранится аутентификационная информация, а также любые табличные данные в базе данных. Следовательно, решение о предоставлении доступа к данным функциям должно быть тщательно взвешенным.

При предоставлении привилегий на данные функции следует учитывать, что записи в таблице, описывающие необязательные параметры, в большинстве случаев реализованы в виде нескольких физических функций с различными списками параметров. Привилегия должна быть предоставлена отдельно для каждой такой функции, если предполагается её использование. psql \df команда может быть полезна для проверки фактических сигнатур функций.

В некоторых из этих функций предусмотрен необязательный missing_ok параметр, определяющий поведение системы в случаях, когда файл или каталог не существует. Если параметр имеет значение true, функция возвращает NULL или пустой набор результатов, в зависимости от контекста. Если же параметр имеет значение false, генерируется ошибка. (Случаи сбоя, отличные от отсутствия «искомого файла» в любом случае регистрируются как ошибки.) Значением по умолчанию является false.

Таблица 2.6.105. Функции общего доступа к файлам

Функция

Описание

pg_ls_dir ( dirname text [, missing_ok boolean, include_dot_dirs boolean ] ) → setof text

Функция возвращает имена всех файлов (включая каталоги и другие специальные объекты файловой системы) в указанном каталоге. include_dot_dirs Параметр определяет, должны ли «.» и «..» быть включены в результирующий набор; по умолчанию данные объекты исключаются. Включение этих объектов может быть целесообразно, когда missing_ok соответствует true, позволяя отличить пустой каталог от несуществующего.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_ls_logdir () → setof record ( name text, размер bigint, изменение timestamp with time zone )

Данная функция возвращает имя, размер и время последнего изменения (mtime) для каждого обычного файла в каталоге журналов сервера. Имена файлов, начинающиеся с точки, а также каталоги и прочие специальные файлы исключаются из вывода.

Вызов этой функции по умолчанию ограничен суперпользователями и ролями с правами с pg_monitor роли, однако другим пользователям может быть предоставлено право EXECUTE для запуска функции.

pg_ls_waldir () → setof record ( name text, размер bigint, изменение timestamp with time zone )

Данная функция возвращает имя, размер и время последнего изменения (mtime) для каждого обычного файла в каталоге журналов упреждающей записи (WAL) сервера. Имена файлов, начинающиеся с точки, каталоги и другие специальные файлы исключаются из вывода.

Вызов этой функции по умолчанию ограничен суперпользователями и ролями с правами с pg_monitor роли, однако другим пользователям может быть предоставлено право EXECUTE для запуска функции.

pg_ls_logicalmapdir () → setof record ( name text, размер bigint, изменение timestamp with time zone )

Данная функция возвращает имя, размер и время последнего изменения (mtime) для каждого обычного файла в каталоге сервера pg_logical/mappings directory. Имена файлов, начинающиеся с точки, каталоги и другие специальные файлы исключаются из вывода.

Вызов данной функции разрешен только суперпользователям и членам роли с pg_monitor роли, однако другим пользователям может быть предоставлено право EXECUTE для запуска функции.

pg_ls_logicalsnapdir () → setof record ( name text, размер bigint, изменение timestamp with time zone )

Данная функция возвращает имя, размер и время последнего изменения (mtime) для каждого обычного файла в каталоге сервера pg_logical/snapshots directory. Имена файлов, начинающиеся с точки, каталоги и другие специальные файлы исключаются из вывода.

Вызов данной функции разрешен только суперпользователям и членам роли с pg_monitor роли, однако другим пользователям может быть предоставлено право EXECUTE для запуска функции.

pg_ls_replslotdir ( slot_name text ) → setof record ( name text, размер bigint, изменение timestamp with time zone )

Данная функция возвращает имя, размер и время последнего изменения (mtime) для каждого обычного файла в каталоге сервера pg_replslot/имя_слота каталоге, в котором slot_name указывает имя слота репликации, переданного в качестве входного аргумента функции. Имена файлов, начинающиеся с точки, а также каталоги и другие специальные файлы исключаются.

Вызов данной функции разрешен только суперпользователям и членам роли с pg_monitor роли, однако другим пользователям может быть предоставлено право EXECUTE для запуска функции.

pg_ls_archive_statusdir () → setof record ( name text, размер bigint, изменение timestamp with time zone )

Данная функция возвращает имя, размер и время последнего изменения (mtime) для каждого обычный файл в каталоге статуса архива WAL сервера (pg_wal/archive_status). Имена файлов, начинающиеся с точки, а также каталоги и другие специальные файлы исключаются.

Вызов данной функции разрешен только суперпользователям и членам роли с pg_monitor роли, однако другим пользователям может быть предоставлено право EXECUTE для запуска функции.

pg_ls_tmpdir ( [ tablespace oid ] ) → setof record ( name text, размер bigint, изменение timestamp with time zone )

Данная функция возвращает имя, размер и время последнего изменения (mtime) для каждого обычный файл в каталоге временных файлов для указанного tablespace. Если tablespace не указано, с pg_default проверяется табличное пространство. Имена файлов, начинающиеся с точки, а также каталоги и другие специальные файлы исключаются.

Вызов данной функции разрешен только суперпользователям и членам роли с pg_monitor роли, однако другим пользователям может быть предоставлено право EXECUTE для запуска функции.

pg_read_file ( имя_файла text [, offset bigint, length bigint ] [, missing_ok boolean ] ) → text

Возвращает содержимое текстового файла или его часть, начиная с заданного байта offset, возвращая при этом не более чем length байтов (меньше, если конец файла будет достигнут раньше). Если offset отрицательно, это значение отсчитывается относительно конца файла. Если offset и length параметры пропущены, возвращается весь файл. Байты, считанные из файла, интерпретируются как строка в кодировке базы данных; ошибка возникает в том случае, если они недопустимы в данной кодировке.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

pg_read_binary_file ( имя_файла text [, offset bigint, length bigint ] [, missing_ok boolean ] ) → bytea

Возвращает содержимое файла целиком или его часть. Данная функция идентична функции pg_read_file за исключением того, что она позволяет считывать произвольные двоичные данные, возвращая результат в виде bytea NOT text; соответственно, проверки кодировки не выполняются.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.

В сочетании с функцией convert_from функции, данная функция может использоваться для чтения текстового файла в указанной кодировке и его преобразования в кодировку базы данных:

SELECT convert_from(pg_read_binary_file('file_in_utf8.txt'), 'UTF8');

pg_stat_file ( имя_файла text [, missing_ok boolean ] ) → record ( размер bigint, доступ timestamp with time zone, изменение timestamp with time zone, изменение timestamp with time zone, создание timestamp with time zone, является директорией boolean )

Возвращает запись, содержащую размер файла, метку времени последнего доступа, метку времени последнего изменения, метку времени последнего изменения статуса файла (только для платформ Unix), метку времени создания файла (только для Windows) и флаг, указывающий, является ли объект директорией.

По умолчанию доступ к этой функции ограничен и разрешен только суперпользователям, но права на выполнение функции (EXECUTE) могут быть предоставлены и другим пользователям.


2.6.28.10. Функции рекомендательных блокировок #

Функции, представленные в Таблица 2.6.106 управляют рекомендательными блокировками. Подробные сведения о правильном использовании этих функций приведены в Раздел 2.10.3.5.

Все эти функции предназначены для блокировки ресурсов, определенных приложением, которые могут быть идентифицированы либо одним 64-битным значением ключа, либо двумя 32-битными значениями ключей (обратите внимание, что эти два пространства ключей не пересекаются). Если другой сеанс уже удерживает конфликтующую блокировку для того же идентификатора ресурса, функции будут либо ожидать освобождения ресурса, либо вернут результат false , соответствующий типу функции. Блокировки могут быть либо разделяемыми (shared), либо исключительными (exclusive): разделяемая блокировка не конфликтует с другими разделяемыми блокировками для того же ресурса, а только с исключительными. Блокировки могут устанавливаться на уровне сеанса (в этом случае они удерживаются до их явного снятия или завершения сеанса) или на уровне транзакции (в этом случае они удерживаются до завершения текущей транзакции; возможность ручного снятия не предусмотрена). Несколько запросов на блокировку уровня сеанса суммируются, поэтому, если один и тот же идентификатор ресурса был заблокирован трижды, для освобождения ресурса до окончания сеанса необходимо выполнить три запроса на разблокировку.

Таблица 2.6.106. Функции рекомендательных блокировок

Функция

Описание

pg_advisory_lock ( ключ bigint ) → void

pg_advisory_lock ( key1 integer, key2 integer ) → void

Запрашивает исключительную рекомендательную блокировку уровня сеанса с ожиданием в случае необходимости.

pg_advisory_lock_shared ( ключ bigint ) → void

pg_advisory_lock_shared ( key1 integer, key2 integer ) → void

Запрашивает разделяемую рекомендательную блокировку уровня сеанса с ожиданием в случае необходимости.

pg_advisory_unlock ( ключ bigint ) → boolean

pg_advisory_unlock ( key1 integer, key2 integer ) → boolean

Освобождает ранее полученную исключительную рекомендательную блокировку уровня сеанса. Возвращает значение true если блокировка была успешно снята. Если блокировка не удерживалась, false возвращается, а также сервер выдает SQL-предупреждение.

pg_advisory_unlock_all () → void

Освобождает все рекомендательные блокировки уровня сеанса, удерживаемые в текущем сеансе. (Данная функция вызывается неявно при завершении сеанса, даже если клиент отключился некорректно.)

pg_advisory_unlock_shared ( ключ bigint ) → boolean

pg_advisory_unlock_shared ( key1 integer, key2 integer ) → boolean

Освобождает ранее полученную разделяемую рекомендательную блокировку уровня сеанса. Возвращает значение true если блокировка была успешно снята. Если блокировка не удерживалась, false возвращается, а также сервер выдает SQL-предупреждение.

pg_advisory_xact_lock ( ключ bigint ) → void

pg_advisory_xact_lock ( key1 integer, key2 integer ) → void

Запрашивает исключительную рекомендательную блокировку уровня транзакции с ожиданием в случае необходимости.

pg_advisory_xact_lock_shared ( ключ bigint ) → void

pg_advisory_xact_lock_shared ( key1 integer, key2 integer ) → void

Запрашивает разделяемую рекомендательную блокировку уровня транзакции с ожиданием в случае необходимости.

pg_try_advisory_lock ( ключ bigint ) → boolean

pg_try_advisory_lock ( key1 integer, key2 integer ) → boolean

Запрашивает исключительную рекомендательную блокировку уровня сеанса, если она доступна. В этом случае блокировка либо будет получена немедленно, и возврат true, или возвращает false без ожидания, если блокировку невозможно получить немедленно.

pg_try_advisory_lock_shared ( ключ bigint ) → boolean

pg_try_advisory_lock_shared ( key1 integer, key2 integer ) → boolean

Получает разделяемую рекомендательную блокировку уровня сеанса, если она доступна. В этом случае блокировка либо будет получена немедленно, и возврат true, или возвращает false без ожидания, если блокировку невозможно получить немедленно.

pg_try_advisory_xact_lock ( ключ bigint ) → boolean

pg_try_advisory_xact_lock ( key1 integer, key2 integer ) → boolean

Получает исключительную рекомендательную блокировку уровня транзакции, если она доступна. В этом случае блокировка либо будет получена немедленно, и возврат true, или возвращает false без ожидания, если блокировку невозможно получить немедленно.

pg_try_advisory_xact_lock_shared ( ключ bigint ) → boolean

pg_try_advisory_xact_lock_shared ( key1 integer, key2 integer ) → boolean

Получает разделяемую рекомендательную блокировку уровня транзакции, если она доступна. В этом случае блокировка либо будет получена немедленно, и возврат true, или возвращает false без ожидания, если блокировку невозможно получить немедленно.


Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению