2025年9月25日: PostgreSQL 18 发布!
支持的版本:当前 (18) / 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

53.25. pg_settings #

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

表 53.25. 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

当前值设置的配置文件(来自配置文件以外的来源的值为NULL,或者当由既非超级用户也无pg_read_all_settings权限的用户检查时为NULL);在使用配置文件中的include指令时很有用。

sourceline int4

当前值设置的配置文件中的行号(来自配置文件以外的来源的值为NULL,或者当由既非超级用户也无pg_read_all_settings权限的用户检查时为NULL)。

pending_restart bool

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


There are several possible values of context. In order of decreasing difficulty of changing the setting, they are

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

These settings can be set from postgresql.conf, or within a session via the SET command. Any user is allowed to change their session-local value. Changes in postgresql.conf will affect existing sessions only if no session-local value has been established with SET.

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

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

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

提交更正

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