54.24. pg_settings
#
Представление pg_settings
открывает доступ к параметрам времени выполнения сервера. По сути оно представляет собой альтернативный интерфейс для команд SHOW
и SET
. Оно также позволяет получить некоторые свойства каждого параметра, которые нельзя получить непосредственно, используя команду SHOW
, например минимальные и максимальные значения.
Таблица 54.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
не были заданы локальные значения.
Чтобы узнать больше о различных способах изменения этих параметров, обратитесь к Разделу 20.1.
Это представление не допускает добавление и удаление строк, но допускает изменение. Команда UPDATE
, применённая к строке pg_settings
, равнозначна выполнению команды SET
для этого параметра. Изменение повлияет только на значение в текущем сеансе. Если UPDATE
выполняется в транзакции, которая затем прерывается, эффект UPDATE
пропадает, когда транзакция откатывается. После фиксирования окружающей транзакции этот эффект сохраняется до завершения сеанса, если он не будет переопределён другой командой UPDATE
или SET
.
В этом представлении не отображаются внесистемные параметры, если определяющий их модуль расширения не будет загружен к моменту обращения к представлению (например, он может загружаться в shared_preload_libraries или при вызове функции уровня C в данном расширении или при выполнении команды LOAD
). Так, например, модули архивирования обычно загружаются процессом архиватора, а не обычными сеансами, поэтому в данном представлении не будут отображаться никакие внесистемные параметры, определённые в таких модулях, если специально не загрузить их в обслуживающий процесс, выполняющий запрос.