49.85. pg_settings
Представление pg_settings открывает доступ к параметрам времени выполнения сервера. По сути оно представляет собой альтернативный интерфейс для команд SHOW и SET. Оно также позволяет получить некоторые свойства каждого параметра, которые нельзя получить непосредственно, используя команду SHOW, например, минимальные и максимальные значения.
Таблица 49.86. Столбцы 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 | integer | Номер строки в файле конфигурации, в которой было задано текущее значение (NULL для значений, полученных не из файлов конфигурации, или при чтении этого поля не суперпользователем и не членом роли pg_read_all_settings). | 
| pending_restart | boolean | true, если значение изменено в файле конфигурации, но требуется перезапуск; в противном случае —false. | 
Поле context может содержать одно из следующих значений (они перечислены в порядке уменьшения сложности изменения параметров):
- internal
- Эти параметры нельзя изменить непосредственно; они отражают значения, определяемые внутри системы. Некоторые из них можно изменить, пересобрав сервер с другими параметрами конфигурации, либо передав другие аргументы команде - initdb.
- postmaster
- Эти параметры могут быть применены только при запуске сервера, так что любое изменение требует перезапуска сервера. Значения этих параметров обычно задаются в - postgresql.conf, либо передаются в командной строке при запуске сервера. Разумеется, параметры более низкого уровня- contextтакже можно задать в момент запуска сервера.
- sighup
- Внесённые в - postgresql.confизменения этих параметров можно применить, не перезапуская сервер. Если передать управляющему процессу сигнал SIGHUP, он перечитает- postgresql.confи применит изменения. Управляющий процесс также перешлёт сигнал SIGHUP всем своим дочерним процессам, чтобы они тоже приняли новое значение.
- superuser-backend
- Внесённые в - postgresql.confизменения этих параметров можно применить без перезапуска сервера; их также можно задать для определённого сеанса в пакете запроса соединения (например, через переменную окружения- PGOPTIONS, учитываемую библиотекой libpq), но сделать это может только суперпользователь. Однако эти параметры никогда не меняются в сеансе, когда он уже начат. Если вы измените их в- postgresql.conf, отправьте сигнал SIGHUP управляющему процессу, чтобы он перечитал- postgresql.conf. Новые значения подействуют только на сеансы, запускаемые после этого.
- backend
- Внесённые в - postgresql.confизменения этих параметров можно применить без перезапуска сервера; их также можно задать для определённого сеанса в пакете запроса соединения (например, через переменную окружения- PGOPTIONS, учитываемую библиотекой libpq); это может сделать любой пользователь в своём сеансе. Однако эти параметры никогда не меняются в сеансе, когда он уже начат. Если вы измените их в- postgresql.conf, отправьте сигнал SIGHUP управляющему процессу, чтобы он перечитал- postgresql.conf. Новые значения подействуют только на сеансы, запускаемые после этого.
- superuser
- Эти параметры можно изменить в - postgresql.conf, либо в рамках сеанса, командой- SET; но только суперпользователи могут менять их, используя- SET. Изменения в- postgresql.confбудут отражены в существующих сеансах, только если в них командой- SETне были заданы локальные значения.
- user
- Эти параметры можно задать в - postgresql.conf, либо в рамках сеанса, командой- SET. В рамках сеанса изменять их разрешено всем пользователям. Изменения в- postgresql.confбудут отражены в существующих сеансах, только если в них командой- SETне были заданы локальные значения.
Чтобы узнать больше о различных способах изменения этих параметров, обратитесь к Разделу 18.1.
Представление pg_settings не допускает добавление и удаление строк, но допускает изменение. Команда UPDATE, применённая к строке pg_settings, равнозначна выполнению команды SET для этого параметра. Изменение повлияет только на значение в текущем сеансе. Если UPDATE выполняется в транзакции, которая затем прерывается, эффект UPDATE пропадает, когда транзакция откатывается. После фиксирования окружающей транзакции этот эффект сохраняется до завершения сеанса, если он не будет переопределён другой командой UPDATE или SET.