51.24. pg_settings#
51.24. pg_settings
Представление pg_settings
предоставляет доступ к параметрам сервера во время выполнения. Оно является альтернативным интерфейсом для команд SHOW
и SET
. Оно также предоставляет доступ к некоторым фактам о каждом параметре, которые недоступны непосредственно из команды SHOW
, таким как минимальное и максимальное значения.
Таблица 51.24. pg_settings
Колонки
Тип столбца Описание |
---|
Имя параметра конфигурации времени выполнения |
Текущее значение параметра |
Неявная единица параметра |
Логическая группа параметра |
Краткое описание параметра |
Дополнительное, более подробное, описание параметра |
Требуется контекст для установки значения параметра (см. ниже) |
Тип параметра ( |
Источник текущего значения параметра |
Минимально допустимое значение параметра (null для нечисловых значений) |
Максимально допустимое значение параметра (null для нечисловых значений) |
Допустимые значения параметра перечисления (null для не перечислимых значений) |
Значение параметра, предполагаемое при запуске сервера, если параметр не установлен иначе |
Значение, которое |
Файл конфигурации, в котором было установлено текущее значение (null для значений, установленных из источников, отличных от файлов конфигурации, или когда они проверяются пользователем, который не является суперпользователем и не имеет привилегий |
Номер строки внутри файла конфигурации, в которой было установлено текущее значение (null для значений, установленных из источников, отличных от файлов конфигурации, или когда они были рассмотрены пользователем, который не является суперпользователем и не имеет привилегий |
|
Возможны несколько значений тега context
.
В порядке убывания сложности изменения настроек они следующие:
internal
Эти настройки не могут быть изменены напрямую; они отражают внутренне определенные значения. Некоторые из них могут быть настраиваемыми путем пересборки сервера с различными параметрами конфигурации или изменения параметров, передаваемых в initdb.
postmaster
Эти настройки могут быть применены только при запуске сервера, поэтому любое изменение требует перезапуска сервера. Значения для этих настроек обычно хранятся в файле
postgresql.conf
или передаются через командную строку при запуске сервера. Конечно, настройки с любым из более низких типовcontext
также могут быть установлены при запуске сервера.sighup
Изменения этих настроек можно внести в файл
postgresql.conf
без перезапуска сервера. Отправьте сигнал SIGHUP постмастеру, чтобы заставить его перечитать файлpostgresql.conf
и применить изменения. Постмастер также пересылает сигнал SIGHUP своим дочерним процессам, чтобы они все получили новое значение.superuser-backend
Изменения этих настроек можно внести в файл
postgresql.conf
без перезапуска сервера. Они также могут быть установлены для конкретной сессии в пакете запроса на подключение (например, через переменную окружения libpq'sPGOPTIONS
), но только если подключающийся пользователь является суперпользователем или ему были предоставлены соответствующие привилегииSET
. Однако, эти настройки никогда не изменяются в сессии после ее запуска. Если вы измените их в файлеpostgresql.conf
, отправьте сигнал SIGHUP постмастеру, чтобы заставить его перечитать файлpostgresql.conf
. Новые значения будут влиять только на последующие запущенные сессии.backend
Изменения этих настроек можно внести в файл
postgresql.conf
без перезапуска сервера. Они также могут быть установлены для конкретной сессии в пакете запроса на подключение (например, через переменную окружения libpq'sPGOPTIONS
); любой пользователь может сделать такое изменение для своей сессии. Однако эти настройки никогда не изменяются в сессии после ее запуска. Если вы измените их в файле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
).
Например, поскольку модули архивации
обычно загружаются только процессом архиватора, а не обычными сессиями,
это представление не будет отображать настроенные параметры, определенные такими модулями,
если не будет предпринято специальное действие по их загрузке в процесс сервера,
выполняющий запрос.