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

Функции, описанные в этом разделе, используются для контроля и мониторинга сервера QHB.

Функции для параметров конфигурации

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

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

Функция

Описание

Пример(ы)

current_setting ( имя_параметра text [, может_отсутствовать boolean ] ) → text

Возвращает текущее значение параметра имя_параметра. Если такого параметра нет, current_setting выдает ошибку, если только не передан параметр может_отсутствовать со значением true (в этом случае возвращается NULL). Эта функция соответствует команде SQL SHOW.

current_setting('datestyle') → ISO, MDY

set_config ( имя_параметра text, новое_значение text, локальный boolean ) → text

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

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


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

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

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

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

Функция

Описание

pg_cancel_backend ( pid integer ) → boolean

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

pg_log_backend_memory_contexts ( pid integer ) → boolean

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

pg_reload_conf () → boolean

Заставляет все процессы сервера QHB перезагрузить их файлы конфигурации. (Для запуска этой операции посылается сигнал SIGHUP процессу qhbmaster, который, в свою очередь, посылает SIGHUP всем своим дочерним процессам.) Перед перезагрузкой можно воспользоваться представлениями pg_file_settings и pg_hba_file_rules для проверки файлов конфигурации на предмет возможных ошибок.

pg_rotate_logfile () → boolean

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

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

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

Функции pg_cancel_backend и pg_terminate_backend отправляют сигналы (SIGINT или SIGTERM соответственно) обслуживающим процессам, идентифицируемым по PID. PID активного процесса можно найти в столбце pid представления pg_stat_activity или в списке процессов qhb на сервере (используя ps в Unix). Роль активного процесса можно найти в столбце usename представления pg_stat_activity.

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

qhb=# SELECT pg_log_backend_memory_contexts(pg_backend_pid());
 pg_log_backend_memory_contexts
--------------------------------
 t
(1 row)

Для каждого контекста памяти будет выводится одно сообщение. Например:

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 total in 2 blocks; 5152 free (0 chunks); 11232 used
LOG:  level: 1; Operator class cache: 8192 total in 1 blocks; 512 free (0 chunks); 7680 used
LOG:  level: 1; smgr relation table: 16384 total in 2 blocks; 4544 free (3 chunks); 11840 used
LOG:  level: 1; TransactionAbortContext: 32768 total in 1 blocks; 32504 free (0 chunks); 264 used
...
LOG:  level: 1; ErrorContext: 8192 total in 1 blocks; 7928 free (3 chunks); 264 used
LOG:  Grand total: 1651920 bytes in 201 blocks; 622360 free (88 chunks); 1029560 used

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


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

Функции, перечисленные в Таблице 87, помогают создавать резервные копии в режиме реального времени. Эти функции нельзя выполнять во время восстановления (за исключением неэксклюзивного варианта pg_start_backup, неэксклюзивного варианта pg_stop_backup, а также функций pg_is_in_backup, pg_backup_start_time и pg_wal_lsn_diff).

Подробную информацию о надлежащем использовании этих функций см. в разделе Непрерывное архивирование и восстановление на момент времени (PITR).

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

Функция

Описание

pg_create_restore_point ( имя text ) → pg_lsn

Создает в журнале упреждающей записи именованный маркер, который позднее можно использовать как цель при восстановлении, и возвращает соответствующую ему позицию в журнале. Выданное имя затем можно использовать в параметре 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_start_backup ( метка text [, быстро boolean [, эксклюзивный_режим boolean ]] ) → pg_lsn

Подготавливает сервер к началу резервного копирования в режиме реального времени. Единственный требуемый параметр — произвольная пользовательская метка для резервной копии. (Обычно это имя, под которым будет храниться файл дампа.) Если необязательный второй параметр имеет значение true, функция pg_start_backup должна выполняться как можно быстрее. При этом будет принудительно выполнена контрольная точка, что вызовет кратковременный всплеск операций ввода/вывода, замедлив тем самым параллельно выполняемые запросы. Необязательный третий параметр указывает, будет ли резервное копирование выполняться в эксклюзивном (по умолчанию) или неэксклюзивном режиме.
При копировании в эксклюзивном режиме эта функция записывает файл метки (backup_label) и, если есть ссылки в каталоге pg_tblspc/, файл карты табличных пространств (tablespace_map) в каталог данных кластера баз данных, выполняет процесс контрольной точки, а затем возвращает начальную позицию резервной копии в журнале упреждающей записи. (Это результирующее значение можно игнорировать, но в некоторых случаях оно может быть полезным.) При копировании в неэксклюзивном режиме содержимое этих файлов возвращается функцией pg_stop_backup и должно быть скопировано в область резервного копирования самим пользователем.
По умолчанию эту функцию могут вызывать только суперпользователи, но право EXECUTE на ее выполнение можно дать и другим пользователям.

pg_stop_backup ( эксклюзивный_режим boolean [, ждать_архивирования boolean ] ) → setof record ( lsn pg_lsn, файл_метки text, файл_карты_табл_пространств text )

Завершает выполнение эксклюзивного или неэксклюзивного копирования в режиме реального времени. Значение параметра эксклюзивный_режим должно соответствовать тому, что было передано в предыдущем вызове функции pg_start_backup. При копировании в эксклюзивном режиме pg_stop_backup удаляет файл метки и файл карты табличных пространств (если он существует), созданные pg_start_backup. При копировании в неэксклюзивном режиме ожидаемое содержимое этих файлов возвращается в виде части результата этой функции и должно быть записано в файлы в области резервного копирования (а не в каталоге данных).
Также имеется необязательный второй параметр типа boolean. Если он равен false, функция вернет результат сразу после окончания резервного копирования, не дожидаясь архивирования WAL. Такое поведение полезно только для программ резервного копирования, независимо мониторящих архивирование WAL. В иных случаях архив WAL, требующийся для согласованности резервной копии, может отсутствовать, делая копию бесполезной. По умолчанию или когда этот параметр равен true, pg_stop_backup будет ждать завершения архивирования WAL, если оно включено. (Для резервного сервера это означает, что функция будет ждать, только при условии archive_mode = always. При низкой активности записи на основном сервере может быть полезно выполнить на нем pg_switch_wal, чтобы запустить немедленное переключение сегмента.)
При выполнении на основном сервере эта функция также создает файл истории резервного копирования в архивной области журнала упреждающей записи. В файле истории содержится метка, заданная при вызове pg_start_backup, начальная и конечная позиция копии в журнале, а также время начала и окончания копирования. После записи конечной позиции текущая позиция добавления в журнале упреждающей записи автоматически перемещается в следующий файл журнала, чтобы файл конечной позиции можно было немедленно заархивировать для завершения резервного копирования.
Результатом этой функции является единственная запись. Столбец lsn содержит позицию завершения резервного копирования в журнале упреждающей записи (которую, опять же, можно игнорировать). Второй и третий столбцы после окончания эксклюзивного копирования содержат NULL, а после неэксклюзивного — ожидаемое содержимое файлов метки и карты табличных пространств.
По умолчанию эту функцию могут вызывать только суперпользователи, но право EXECUTE на ее выполнение можно дать и другим пользователям.

pg_stop_backup () → pg_lsn

Завершает выполнение эксклюзивного копирования в режиме реального времени. Эта упрощенная версия равнозначна вызову pg_stop_backup(true, true), за исключением того, что она возвращает в результате только pg_lsn.
По умолчанию эту функцию могут вызывать только суперпользователи, но право EXECUTE на ее выполнение можно дать и другим пользователям.

pg_is_in_backup () → boolean

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

pg_backup_start_time () → timestamp with time zone

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

pg_switch_wal () → pg_lsn

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

pg_walfile_name ( lsn pg_lsn ) → text

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

pg_walfile_name_offset ( lsn pg_lsn ) → record ( имя_файла text, смещение_файла integer )

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

pg_wal_lsn_diff ( lsn1 pg_lsn, lsn2 pg_lsn ) → numeric

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

Функция pg_current_wal_lsn отображает текущую позицию записи в журнале упреждающей записи в том же формате, что и вышеперечисленные функции. Аналогичным образом функция pg_current_wal_insert_lsn отображает текущую позицию добавления, а pg_current_wal_flush_lsn — позицию сброса данных на диск. Позиция добавления является «логическим» концом журнала упреждающей записи в любой момент времени, тогда как позиция записи является концом данных, фактически выписанных из внутренних буферов сервера, а позиция сброса является последней позицией, которая считается записанной в долговременное хранилище. Позиция записи — это конец данных, которые можно проверить снаружи сервера, и обычно именно она требуется, если есть необходимость в архивировании частично заполненных файлов журнала. Позиции добавления и сброса предоставляются главным образом для отладки сервера. Все эти операции выполняются в режиме «только чтение» и не требуют прав суперпользователя.

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

qhb=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup());
        file_name         | file_offset
--------------------------+-------------
 00000001000000000000000D |     4039624
(1 row)

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


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

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

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

Функция

Описание

pg_is_in_recovery () → boolean

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

pg_last_wal_receive_lsn () → pg_lsn

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

pg_last_wal_replay_lsn () → pg_lsn

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

pg_last_xact_replay_timestamp () → timestamp with time zone

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

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

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

Функция

Описание

pg_is_wal_replay_paused () → boolean

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

pg_get_wal_replay_pause_state () → text

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

pg_promote ( ожидание boolean DEFAULT true, секунды_ожидания integer DEFAULT 60 ) → boolean

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

pg_wal_replay_pause () → void

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

pg_wal_replay_resume () → void

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

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

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


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

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

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

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

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

Функция

Описание

pg_export_snapshot () → text

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


Функции для управления репликацией

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

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

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

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

Функция

Описание

pg_create_physical_replication_slot ( имя_слота name [, мгновенный_резерв boolean, временный boolean ] ) → record ( имя_слота name, lsn pg_lsn )

Создает новый физический слот репликации с именем имя_слота. Когда необязательный второй параметр равен true, это указывает, что LSN для этого слота репликации должен быть зарезервирован немедленно; в противном случае LSN резервируется при первом подключении клиента потоковой репликации. Передача изменений из физического слота возможна только по протоколу потоковой репликации. Когда необязательный третий параметр временный равен true, это указывает, что слот не должен постоянно храниться на диске и предназначен к использованию только в текущем сеансе. Временные слоты также освобождаются при любой ошибке. Эта функция соответствует команде протокола репликации CREATE_REPLICATION_SLOT ... PHYSICAL.

pg_drop_replication_slot ( имя_слота name ) → void

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

pg_create_logical_replication_slot ( имя_слота name, плагин name [, временный boolean, две_фазы boolean ] ) → record ( имя_слота name, lsn pg_lsn )

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

pg_copy_physical_replication_slot ( имя_исходного_слота name, имя_целевого_слота name [, временный boolean ] ) → record ( имя_слота name, lsn pg_lsn )

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

pg_copy_logical_replication_slot ( имя_исходного_слота name, имя_целевого_слота name [, временный boolean [, плагин name ]] ) → record ( имя_слота name, lsn pg_lsn )

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

pg_logical_slot_get_changes ( имя_слота name, до_lsn pg_lsn, до_n_изменений integer, VARIADIC параметры text[] ) → setof record ( lsn pg_lsn, id_транзакции xid, данные text )

Возвращает изменения в слоте имя_слота, начиная с последней точки, с которой ранее были получены изменения. Если параметры до_lsn и до_n_изменений равны NULL, логическое декодирование будет продолжаться до конца WAL. Если до_lsn отличен от NULL, декодирование затронет только транзакции, зафиксированные до заданного LSN. Если до_n_изменений отличен от NULL, декодирование остановится, когда число строк, выданных при декодировании, превысит заданное значение. Однако обратите внимание, что фактическое число возвращенных строк может быть больше, поскольку это ограничение проверяется только после добавления строк, выданных при декодировании очередной зафиксированной транзакции.

pg_logical_slot_peek_changes ( имя_слота name, до_lsn pg_lsn, до_n_изменений integer, VARIADIC параметры text[] ) → setof record ( lsn pg_lsn, id_транзакции xid, данные text )

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

pg_logical_slot_get_binary_changes ( имя_слота name, до_lsn pg_lsn, до_n_изменений integer, VARIADIC параметры text[] ) → setof record ( lsn pg_lsn, id_транзакции xid, данные bytea )

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

pg_logical_slot_peek_binary_changes ( имя_слота name, до_lsn pg_lsn, до_n_изменений integer, VARIADIC параметры text[] ) → setof record ( lsn pg_lsn, id_транзакции xid, данные bytea )

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

pg_replication_slot_advance ( имя_слота name, до_lsn pg_lsn ) → record ( имя_слота name, итоговый_lsn pg_lsn )

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

pg_replication_origin_create ( имя_узла text ) → oid

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

pg_replication_origin_drop ( имя_узла text ) → void

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

pg_replication_origin_oid ( имя_узла text ) → oid

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

pg_replication_origin_session_setup ( имя_узла 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 ( сброс_на_диск boolean ) → pg_lsn

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

pg_replication_origin_xact_setup ( исходный_lsn pg_lsn, исх_метка_времени timestamp with time zone ) → void

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

pg_replication_origin_xact_reset () → void

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

pg_replication_origin_advance ( имя_узла text, lsn pg_lsn ) → void

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

pg_replication_origin_progress ( имя_узла text, сброс_на_диск boolean ) → pg_lsn

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

pg_logical_emit_message ( часть_транзакции boolean, префикс text, содержимое text ) → pg_lsn

pg_logical_emit_message ( часть_транзакции boolean, префикс text, содержимое bytea ) → pg_lsn

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


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

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

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

Функция

Описание

pg_column_size ( "any" ) → integer

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

pg_column_compression ( "any" ) → text

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

pg_database_size ( name ) → bigint

pg_database_size ( oid ) → bigint

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

pg_indexes_size ( regclass ) → bigint

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

pg_relation_size ( отношение regclass [, ветвь text ] ) → bigint

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

  • main возвращает размер основной ветви данных этого отношения.
  • fsm возвращает размер карты свободного пространства (см. раздел Карта свободного пространства), связанной с этим отношением.
  • vm возвращает размер карты видимости (см. раздел Карта видимости), связанной с этим отношением.
  • init возвращает размер ветви инициализации (если таковая имеется), связанной с этим отношением.

pg_size_bytes ( text ) → bigint

Преобразует размер в формате, удобном для восприятия человеком (который возвращает функция pg_size_pretty), в байты.

pg_size_pretty ( bigint ) → text

pg_size_pretty ( numeric ) → text

Преобразует размер в байтах в более удобный для восприятия человеком формат с единицами измерения размера (bytes, kB, MB, GB или TB соответственно). Обратите внимание, что эти единицы являются степенями 2, а не 10, поэтому 1kB — это 1024 байта, 1MB — это 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. Результат равен сумме результатов функций pg_table_size и pg_indexes_size.

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

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

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

Функция

Описание

pg_relation_filenode ( отношение regclass ) → oid

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

pg_relation_filepath ( отношение regclass ) → text

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

pg_filenode_relation ( табличное_пространство oid, файловый_узел oid ) → regclass

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

В Таблице 94 перечислены функции, используемые для управления правилами сортировки.

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

Функция

Описание

pg_collation_actual_version ( oid ) → text

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

pg_import_system_collations ( схема regnamespace ) → integer

Добавляет правила сортировки в системный каталог pg_collation с учетом всех локалей, которые она находит в операционной системе. Эту информацию использует qhb_bootstrap; подробную информацию см. в подразделе Управление правилами сортировки. Если позднее в операционную систему устанавливаются дополнительные локали, эту функцию можно запустить снова, чтобы добавить правила сортировки для новых локалей. Локали, соответствующие существующим записям в pg_collation, будут пропущены. (Но объекты правил сортировки, относящиеся к локалям, которых больше не существует в операционной системе, этой функцией не удаляются.) В параметре схема обычно передается pg_catalog, но это не обязательное требование; правила сортировки могут быть установлены и в какую-нибудь другую схему. Эта функция возвращает число созданных ей новых объектов правил сортировки. Вызывать эту функцию могут только суперпользователи.

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

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

Функция

Описание

pg_partition_tree ( regclass ) → setof record ( id_отношения regclass, id_родителя regclass, является_листовой boolean, уровень 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');

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

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

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

Функция

Описание

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

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

brin_summarize_range ( индекс regclass, номер_блока bigint ) → integer

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

brin_desummarize_range ( индекс regclass, номер_блока bigint ) → void

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

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

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


Функции доступа к типовым файлам

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

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

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

Таблица 97. Функции доступа к типовым файлам

Функция

Описание

pg_ls_dir ( имя_каталога text [, может_отсутствовать boolean, включать_каталоги_с_точками boolean ] ) → setof text

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

pg_ls_logdir () → setof record ( имя text, размер bigint, модификация timestamp with time zone )

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

pg_ls_waldir () → setof record ( имя text, размер bigint, модификация timestamp with time zone )

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

pg_ls_archive_statusdir () → setof record ( имя text, размер bigint, модификация timestamp with time zone )

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

pg_ls_tmpdir ( [ табличное_пространство oid ] ) → setof record ( имя text, размер bigint, модификация timestamp with time zone )

Возвращает имя, размер и время последнего изменения (mtime) всех обычных файлов во временном каталоге файлов для табличного_пространства. Если табличное_пространство не задано, проверяется табличное пространство pg_default. Файлы с именами, начинающимися с точки, каталоги и другие специальные файлы исключаются.
По умолчанию эту функцию могут вызывать только суперпользователи и члены роли pg_monitor, но право EXECUTE на ее выполнение можно дать и другим пользователям.

pg_read_file ( имя_файла text [, смещение bigint, длина bigint [, может_отсутствовать boolean ]] ) → text

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

pg_read_binary_file ( имя_файла text [, смещение bigint, длина bigint [, может_отсутствовать boolean ]] ) → bytea

Возвращает текстовый файл, целиком или частично. Эта функция идентична pg_read_file, за исключением того, что она может читать произвольные двоичные данные, возвращая результат в значении типа bytea, а не text; соответственно, никакие проверки кодировки не осуществляются.
По умолчанию эту функцию могут вызывать только суперпользователи, но право EXECUTE на ее выполнение можно дать и другим пользователям.
В сочетании с функцией convert_from эту функцию можно использовать для чтения текстового файла в заданной кодировке и преобразования в кодировку базы данных:

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

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

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


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

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

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

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

Функция

Описание

pg_advisory_lock ( ключ bigint ) → void

pg_advisory_lock ( ключ1 integer, ключ2 integer ) → void

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

pg_advisory_lock_shared ( ключ bigint ) → void

pg_advisory_lock_shared ( ключ1 integer, ключ2 integer ) → void

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

pg_advisory_unlock ( ключ bigint ) → boolean

pg_advisory_unlock ( ключ1 integer, ключ2 integer ) → boolean

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

pg_advisory_unlock_all () → void

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

pg_advisory_unlock_shared ( ключ bigint ) → boolean

pg_advisory_unlock_shared ( ключ1 integer, ключ2 integer ) → boolean

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

pg_advisory_xact_lock ( ключ bigint ) → void

pg_advisory_xact_lock ( ключ1 integer, ключ2 integer ) → void

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

pg_advisory_xact_lock_shared ( ключ bigint ) → void

pg_advisory_xact_lock_shared ( ключ1 integer, ключ2 integer ) → void

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

pg_try_advisory_lock ( ключ bigint ) → boolean

pg_try_advisory_lock ( ключ1 integer, ключ2 integer ) → boolean

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

pg_try_advisory_lock_shared ( ключ bigint ) → boolean

pg_try_advisory_lock_shared ( ключ1 integer, ключ2 integer ) → boolean

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

pg_try_advisor_xact_lock ( ключ bigint ) → boolean

pg_try_advisory_xact_lock ( ключ1 integer, ключ2 integer ) → boolean

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

pg_try_advisory_xact_lock_shared ( ключ bigint ) → boolean

pg_try_advisory_xact_lock_shared ( ключ1 integer, ключ2 integer ) → boolean

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


Функции для управления метриками и аннотациями

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

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

Функция

Описание

qhb_timer_report имя text значение int8

Отправляет метрику с заданным именем и заданным в наносекундах значением таймера.

qhb_counter_increase_by имя text значение int8

Увеличивает значение «счетчика» для метрики с указанным именем. Во втором аргументе передается число наносекунд, на которое увеличивается это значение.

qhb_gauge_add имя text значение int8

Увеличивает значение типа gauge для метрики с указанным именем. Во втором аргументе передается число наносекунд, на которое увеличивается это значение.

qhb_gauge_sub имя text значение int8

Уменьшает значение типа gauge для метрики с указанным именем. Во втором аргументе передается число наносекунд, на которое уменьшается это значение.

qhb_gauge_update имя text значение int8

Устанавливает значение типа gauge для метрики с указанным именем.

qhb_annotation текст text [тег ...]

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