53.24. pg_settings
Представление pg_settings открывает доступ к параметрам времени выполнения сервера. По сути оно представляет собой альтернативный интерфейс для команд SHOW и SET. Оно также позволяет получить некоторые свойства каждого параметра, которые нельзя получить непосредственно, используя команду SHOW, например минимальные и максимальные значения.
Таблица 53.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изменения этих параметров можно применить без перезапуска сервера; их также можно задать для определённого сеанса в пакете запроса соединения (например, через переменную окружения- 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). Так, например, модули архивирования обычно загружаются процессом архиватора, а не обычными сеансами, поэтому в данном представлении не будут отображаться никакие внесистемные параметры, определённые в таких модулях, если специально не загрузить их в обслуживающий процесс, выполняющий запрос.