↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
历史版本。 PostgreSQL 10 已结束支持。 2022-11-10. 请参阅 当前版本手册.

51.85. pg_settings #

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

表 51.86. pg_settings 列

名称类型 描述
nametext 运行时配置参数名
settingtext 参数的当前值
unittext 参数的隐含单位
categorytext 参数的逻辑组
short_desctext 参数的简短描述
extra_desctext 附加的参数的详细描述
contexttext 设置参数值所需的上下文(见下文)
vartypetext 参数类型(bool,enum,integer,real,或 string)
sourcetext 当前参数值的来源
min_valtext 参数的最小允许值(对非数值参数为 NULL)
max_valtext 参数的最大允许值(对非数值参数为 NULL)
enumvalstext[] 枚举参数的允许值(对非枚举参数为 NULL)
boot_valtext 如果该参数未以其他方式设置,则为服务器启动时假定的参数值
reset_valtextRESET 在当前会话中会将此参数重置到的值
sourcefiletext 设置当前值的配置文件(对于来自配置文件以外来源的值,或者由既不是超级用户也不是 pg_read_all_settings 成员的用户查看时,为 NULL);在配置文件中使用 include 指令时这很有帮助
sourcelineinteger 设置当前值的配置文件行号(对于来自配置文件以外来源的值,或者查看者既非超级用户、也不是 pg_read_all_settings 成员时,为 NULL)。
pending_restartboolean 如果配置文件中修改了该值但需要重启,则为 true,否则为 false

有几种可能的 context 值。按照更改设置的难度递减的顺序,它们是:

internal

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

postmaster

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

sighup

可以在 postgresql.conf 中更改这些设置,而无需重启服务器。向 postmaster 发送 SIGHUP 信号,会使其重新读取 postgresql.conf 并应用这些更改。postmaster 还会将 SIGHUP 信号转发给其子进程,以便它们都采用新值。

superuser-backend

可以在 postgresql.conf 中更改这些设置,而无需重启服务器。也可以在连接请求报文中为特定会话设置这些值(例如,通过 libpq 的 PGOPTIONS 环境变量),但前提是连接用户是超级用户。然而,这些设置在会话启动后永远不会更改。如果在 postgresql.conf 中更改它们,请向 postmaster 发送 SIGHUP 信号,使其重新读取 postgresql.conf。新值只会影响随后启动的会话。

backend

可以在 postgresql.conf 中更改这些设置,而无需重启服务器。也可以在连接请求报文中为特定会话设置这些值(例如,通过 libpq 的 PGOPTIONS 环境变量);任何用户都可以为其会话进行此类更改。但是,在会话启动后,这些设置永远不会更改。如果在 postgresql.conf 中更改它们,请向 postmaster 发送 SIGHUP 信号,使其重新读取 postgresql.conf。新值只会影响随后启动的会话。

superuser

这些设置可以从 postgresql.conf 中设置,或者通过 SET 命令在会话中设置;但只有超级用户可以通过 SET 更改它们。如果没有使用 SET 建立会话本地值,那么在 postgresql.conf 中的更改也会影响到现有会话。

user

这些设置可以从 postgresql.conf 中设置,或通过 SET 命令在会话中设置。任何用户都可以更改其会话本地值。如果没有使用 SET 建立会话本地值,那么在 postgresql.conf 中的更改也会影响到现有会话。

有关更改这些参数的各种方法,详见第 19.1 节。

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

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.