受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

53.25. pg_settings #

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

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

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

max_val text

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

enumvals text[]

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

boot_val text

如果该参数未以其他方式设置,则为服务器启动时假定的参数值

reset_val text

在当前会话中,RESET将会设置的参数值

sourcefile text

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

sourceline int4

当前值在配置文件中设置的行号(对于从配置文件以外的源设置的值为null, 或者当被既不是超级用户也没有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 中更改这些设置,而无需重启服务器。 也可以在连接请求报文中为特定会话设置这些值(例如,通过 libpqPGOPTIONS 环境变量),但前提是连接用户是超级用户,或已被授予适当的 SET 权限。 然而,这些设置在会话启动后永远不会更改。 如果在 postgresql.conf 中更改它们,请向 postmaster 发送 SIGHUP 信号,使其重新读取 postgresql.conf。新值只会 影响随后启动的会话。

backend

可以在 postgresql.conf 中更改这些设置,而无需重启服务器。 也可以在连接请求报文中为特定会话设置这些值(例如,通过 libpqPGOPTIONS 环境变量);任何用户都可以为其会话进行此类更改。 但是,在会话启动后,这些设置永远不会更改。 如果在 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 命令的效果也会消失。 一旦外围事务提交,这些效果会持续到会话结束,除非被另一个 UPDATESET 覆盖。

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

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。