Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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

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

max_val text

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

enumvals text[]

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

boot_val text

如果未通过其他方式设置,则服务器启动时参数所假定的值

reset_val text

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

sourcefile text

当前值设置到的配置文件(对于从配置文件(或在非超级用户或没有 pg_read_all_settings 权限的用户进行检查时)以外的来源设置的的值为空);在配置文件中使用 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 更改它们。对 postgresql.conf 的更改仅在未通过 SET 建立会话局部值时才会影响现有会话。

user

这些设置可以从 postgresql.conf 设置,或者在会话中通过 SET 命令设置。允许所有用户更改其会话局部值。对 postgresql.conf 的更改仅在未通过 SET 建立会话局部值时才会影响现有会话。

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

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

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