51.24. pg_settings#

51.24. pg_settings

51.24. pg_settings

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

Таблица 51.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)

source 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 без перезапуска сервера. Они также могут быть установлены для конкретной сессии в пакете запроса на подключение (например, через переменную окружения libpq's PGOPTIONS), но только если подключающийся пользователь является суперпользователем или ему были предоставлены соответствующие привилегии SET. Однако, эти настройки никогда не изменяются в сессии после ее запуска. Если вы измените их в файле postgresql.conf, отправьте сигнал SIGHUP постмастеру, чтобы заставить его перечитать файл postgresql.conf. Новые значения будут влиять только на последующие запущенные сессии.

backend

Изменения этих настроек можно внести в файл postgresql.conf без перезапуска сервера. Они также могут быть установлены для конкретной сессии в пакете запроса на подключение (например, через переменную окружения libpq's PGOPTIONS); любой пользователь может сделать такое изменение для своей сессии. Однако эти настройки никогда не изменяются в сессии после ее запуска. Если вы измените их в файле 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). Например, поскольку модули архивации обычно загружаются только процессом архиватора, а не обычными сессиями, это представление не будет отображать настроенные параметры, определенные такими модулями, если не будет предпринято специальное действие по их загрузке в процесс сервера, выполняющий запрос.