52.24. pg_settings #

Представление pg_settings открывает доступ к параметрам времени выполнения сервера. По сути оно представляет собой альтернативный интерфейс для команд SHOW и SET. Оно также позволяет получить некоторые свойства каждого параметра, которые нельзя получить непосредственно, используя команду SHOW, например минимальные и максимальные значения.

Таблица 52.24. Столбцы pg_settings

Тип столбца

Описание

name text

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

setting text

Текущее значение параметра

unit text

Неявно подразумеваемая единица измерения параметра

category text

Логическая группа параметра

short_desc text

Краткое описание параметра

extra_desc text

Дополнительное, более подробное, описание параметра

context text

Контекст, в котором может задаваться значение параметра (см. ниже)

vartype text

Тип параметра (bool, enum, integer, real или string)

источник text

Источник текущего значения параметра

min_val text

Минимальное допустимое значение параметра (NULL для нечисловых значений)

max_val text

Максимально допустимое значение параметра (NULL для нечисловых значений)

enumvals text[]

Допустимые значения параметра-перечисления (NULL для значений не перечислений)

boot_val text

Значение параметра, устанавливаемое при запуске сервера, если параметр не устанавливается другим образом

reset_val text

Значение, к которому будет сбрасывать параметр команда RESET в текущем сеансе

sourcefile text

Файл конфигурации, в котором было задано текущее значение (NULL для значений, полученных не из файлов конфигурации, или при чтении этого поля не суперпользователем и не пользователем с правами роли pg_read_all_settings); полезно при использовании указаний include в файлах конфигурации

sourceline int4

Номер строки в файле конфигурации, в которой было задано текущее значение (NULL для значений, полученных не из файлов конфигурации, или при чтении этого поля не суперпользователем и не пользователем с правами роли pg_read_all_settings).

pending_restart bool

true, если значение изменено в файле конфигурации, но требуется перезапуск; в противном случае — false.


Поле context может содержать одно из следующих значений (они перечислены в порядке уменьшения сложности изменения параметров):

internal

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

postmaster

Эти параметры могут быть применены только при запуске сервера, так что любое изменение требует перезапуска сервера. Значения этих параметров обычно задаются в postgresql.conf, либо передаются в командной строке при запуске сервера. Разумеется, параметры более низкого уровня context также можно задать в момент запуска сервера.

sighup

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

superuser-backend

Внесённые в postgresql.conf изменения этих параметров можно применить без перезапуска сервера; их также можно задать для определённого сеанса в пакете запроса соединения (например, через переменную окружения PGOPTIONS, учитываемую библиотекой libpq), но сделать это может только суперпользователь или пользователь с соответствующими правами SET. Однако эти параметры никогда не меняются в сеансе, когда он уже начат. Если вы измените их в postgresql.conf, отправьте сигнал SIGHUP управляющему процессу, чтобы он перечитал postgresql.conf. Новые значения подействуют только на сеансы, запускаемые после этого.

backend

Внесённые в postgresql.conf изменения этих параметров можно применить без перезапуска сервера; их также можно задать для определённого сеанса в пакете запроса соединения (например, через переменную окружения PGOPTIONS, учитываемую библиотекой libpq); это может сделать любой пользователь в своём сеансе. Однако эти параметры никогда не меняются в сеансе, когда он уже начат. Если вы измените их в postgresql.conf, отправьте сигнал SIGHUP управляющему процессу, чтобы он перечитал postgresql.conf. Новые значения подействуют только на сеансы, запускаемые после этого.

superuser

Эти параметры можно изменить в postgresql.conf, либо в рамках сеанса, командой SET; но только суперпользователи и пользователи с соответствующими правами SET могут менять их, используя SET. Изменения postgresql.conf не повлияют на существующие сеансы, если в них командой SET были заданы локальные значения.

user

Эти параметры можно задать в postgresql.conf, либо в рамках сеанса, командой SET. В рамках сеанса изменять их разрешено всем пользователям. Изменения в postgresql.conf будут отражены в существующих сеансах, только если в них командой SET не были заданы локальные значения.

Чтобы узнать больше о различных способах изменения этих параметров, обратитесь к Разделу 18.1.

Это представление не допускает добавление и удаление строк, но допускает изменение. Команда UPDATE, применённая к строке pg_settings, равнозначна выполнению команды SET для этого параметра. Изменение повлияет только на значение в текущем сеансе. Если UPDATE выполняется в транзакции, которая затем прерывается, эффект UPDATE пропадает, когда транзакция откатывается. После фиксирования окружающей транзакции этот эффект сохраняется до завершения сеанса, если он не будет переопределён другой командой UPDATE или SET.

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