PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

53.25. pg_settings #

视图 pg_settings 提供对服务器运行时参数的 访问。 它本质上是 SHOW 和 SET 命令的另一种 接口。 它还提供对每个参数的一些事实的访问,这些事实无法从 SHOW 直接获得, 例如最小值和最大值。

Table 53.25. \1 字段列说明

Column Type

Description

name text

运行时配置参数的名称

setting text

参数的当前值

unit text

参数的隐含单位

category text

参数的逻辑分组

short_desc text

参数的简要描述

extra_desc text

关于该参数的附加的更详细描述

context text

设置参数值所需的环境(见下文)

vartype text

Parameter type (bool, enum, integer, real, or string)

source text

当前参数值的来源

min_val text

参数允许的最小值(非数值时为空)

max_val text

参数允许的最大值(非数值时为空)

enumvals text[]

枚举参数的允许值(非枚举类型时为空)

boot_val text

如果参数没有被另行设置,服务器启动时假定的参数值

reset_val text

在当前会话中 RESET 会把该参数重置到的值

sourcefile text

设置当前值时所在的配置文件 (对从配置文件之外的来源设置的值,或由既非超级用户也不具有 pg_read_all_settings 特权的用户查看时, 为空); 在配置文件中使用 include 指令时很有帮助

sourceline int4

在配置文件中设置当前值所在的行号 (对从配置文件之外的来源设置的值,或由既非超级用户也不具有 pg_read_all_settings 特权的用户查看时, 为空)。

pending_restart bool

如果该值已在配置文件中被更改但需要重启则为 true;否则为 false。


context 有几种可能的取值。 按修改设置的难度从高到低排列,它们是:

internal

这些设置不能被直接修改;它们反映内部确定的值。 其中一些可以通过用不同的配置选项重新构建服务器,或通过更改 提供给 initdb 的选项来调整。

postmaster

这些设置只能在服务器启动时被应用,因此任何更改都需要重启 服务器。 这些设置的值通常存储在 postgresql.conf 文件中, 或在启动服务器时通过命令行传递。 当然,任何较低 context 类型的设置也可以在服务器 启动时被设置。

sighup

对这些设置的更改可以在 postgresql.conf 中进行,无需重启 服务器。 向 postmaster 发送一个 SIGHUP 信号,使它重新读取 postgresql.conf 并应用这些更改。 postmaster 还会把 SIGHUP 信号转发给它的子进程, 使它们都获取新值。

superuser-backend

对这些设置的更改可以在 postgresql.conf 中进行,无需重启 服务器。 它们也可以在连接请求包中为特定会话设置 (例如通过 libpq 的 PGOPTIONS 环境变量),但前提是连接用户是超级用户或已被授予相应的 SET 特权。 不过,这些设置在会话启动之后从不变化。 如果您在 postgresql.conf 中更改了它们, 请向 postmaster 发送一个 SIGHUP 信号,使它重新读取 postgresql.conf。 新值将只影响随后启动的会话。

backend

对这些设置的更改可以在 postgresql.conf 中进行,无需重启 服务器。 它们也可以在连接请求包中为特定会话设置 (例如通过 libpq 的 PGOPTIONS 环境变量);任何用户都可以为其会话做这样的更改。 不过,这些设置在会话启动之后从不变化。 如果您在 postgresql.conf 中更改了它们, 请向 postmaster 发送一个 SIGHUP 信号,使它重新读取 postgresql.conf。 新值将只影响随后启动的会话。

superuser

这些设置可以从 postgresql.conf 设置, 也可以在会话内通过 SET 命令设置;但只有超级用户和拥有相应 SET 特权的用户才能通过 SET 更改它们。 只有在尚未用 SET 建立会话本地值时, postgresql.conf 中的更改才会影响现有 会话。

user

这些设置可以从 postgresql.conf 设置, 也可以在会话内通过 SET 命令设置。 任何用户都被允许更改其会话本地值。 只有在尚未用 SET 建立会话本地值时, postgresql.conf 中的更改才会影响现有 会话。

关于更改这些参数的各种方法的更多信息,请参见 Section 19.1。

这个视图不能被插入或删除,但可以被更新。 对 pg_settings 的一行应用 UPDATE 等价于对该具名参数执行 SET 命令。 这种更改只影响当前会话使用的值。 如果在一个随后被中止的事务中发出 UPDATE,该 UPDATE 命令的效果会在事务回滚时消失。 一旦外围事务被提交,这些效果将持续到会话结束, 除非被另一个 UPDATE 或 SET 覆盖。

除非定义它们的扩展模块已被执行查询的后端进程加载 (例如,通过在 shared_preload_libraries 中提及、 调用扩展中的一个 C 函数,或 LOAD 命令), 这个视图不会显示 自定义选项。 例如,由于 归档模块 通常只被归档进程加载而非普通会话, 除非采取特殊动作把它们加载进执行查询的后端进程, 这个视图将不会显示这类模块定义的任何自定义选项。