Postgresql 中文操作指南

54.24. pg_settings #

视图 pg_settings 提供对服务器运行时参数的访问权限。它基本上是 SHOWSET 命令的备用接口。它还可访问 SHOW 直接不可获取的每个参数的一些事实,例如最小值和最大值。

Table 54.24. pg_settings Columns

Column Type

Description

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 中更改这些设置而不重启服务器。也可以在连接请求数据包(例如,通过 libpq 的 PGOPTIONS 环境变量)中将这些设置设为特定会话,但前提是连接用户是超级用户或被授予了适当的 SET 权限。但是,在会话开始后,这些设置在会话中绝不会更改。如果在 postgresql.conf 中更改了它们,则向后端程序发送一个 SIGHUP 信号,使它重新读取 postgresql.conf 。新值仅会影响之后启动的会话。

  • backend

    • 可以在 postgresql.conf 中更改这些设置而不重启服务器。也可以在连接请求数据包(例如,通过 libpq 的 PGOPTIONS 环境变量)中将这些设置设为特定会话;任何用户都可以对其会话进行此类更改。但是,在会话开始后,这些设置在会话中绝不会更改。如果在 postgresql.conf 中更改了它们,则向后端程序发送一个 SIGHUP 信号,使它重新读取 postgresql.conf 。新值仅会影响之后启动的会话。

  • superuser

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

  • user

    • 这些设置可以从 postgresql.conf 设置,或者通过 SET 命令在会话中设置。允许任何用户更改其会话本地值。 postgresql.conf 中的更改仅当没有使用 SET 建立会话本地值时才会影响现有会话。

有关更改这些参数的多种方式的详细信息,请参见 Section 20.1

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

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