支持的版本: 当前 (17) / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 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

52.24. pg_settings #

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

表 52.24. pg_settings

列名 类型

描述

name text

运行时配置参数名称

setting text

参数的当前值

unit text

参数的隐式单位

category text

参数的逻辑组

short_desc text

参数的简要描述

extra_desc text

参数的额外、更详细的描述

context text

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

vartype text

参数类型(boolenumintegerrealstring

source text

当前参数值的来源

min_val text

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

max_val text

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

enumvals text[]

枚举参数的允许值(非枚举值为 null)

boot_val text

如果参数未被设置,则服务器启动时假定的参数值

reset_val text

RESET 在当前会话中将参数重置为的值

sourcefile text

当前值在其中设置的配置文件(对于从配置文件以外的来源设置的值,或者由既不是超级用户也没有 pg_read_all_settings 权限的用户检查时,为 null);当在配置文件中使用 include 指令时很有用

sourceline int4

当前值在配置文件中设置的行号(对于从配置文件以外的来源设置的值,或者由既不是超级用户也没有 pg_read_all_settings 权限的用户检查时,为 null)。

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 中更改这些设置。它们也可以在连接请求数据包中为特定会话设置(例如,通过 libpqPGOPTIONS 环境变量),但前提是连接用户是超级用户或已被授予适当的 SET 权限。但是,这些设置在会话启动后永远不会更改。如果更改 postgresql.conf 中的设置,请向 postmaster 发送一个 SIGHUP 信号,使其重新读取 postgresql.conf。新值仅会影响随后启动的会话。

backend

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

superuser

这些设置可以从 postgresql.conf 设置,也可以在会话中通过 SET 命令设置;但只有超级用户和具有适当 SET 权限的用户才能通过 SET 更改它们。postgresql.conf 中的更改只有在没有使用 SET 建立会话本地值的情况下才会影响现有会话。

user

这些设置可以从 postgresql.conf 设置,也可以在会话中通过 SET 命令设置。允许任何用户更改其会话本地值。postgresql.conf 中的更改只有在没有使用 SET 建立会话本地值的情况下才会影响现有会话。

有关更改这些参数的各种方法的更多信息,请参见 第 19.1 节

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

除非定义它们的扩展模块已由执行查询的后端进程加载(例如,通过在 shared_preload_libraries 中提及,调用扩展中的 C 函数,或使用 LOAD 命令),否则此视图不会显示 自定义选项。例如,由于 归档模块 通常仅由归档器进程加载,而不是常规会话,因此除非采取特殊措施将其加载到执行查询的后端进程中,否则此视图不会显示此类模块定义的任何自定义选项。

提交更正

如果您在文档中发现任何不正确、与您特定功能体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。