On this page
51.85. pg_settings
视图pg_settings
提供对服务器运行时参数的访问。它实际上是SHOW和SET命令的替代接口。它还提供对每个参数的某些事实的访问,这些事实不能从SHOW
直接获得,例如最小值和最大值。
表 51.86. pg_settings
列
Name | Type | Description |
---|---|---|
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[] |
枚举参数的允许值(非枚举值为 null) |
boot_val |
text |
如果未另外设置参数,则在服务器启动时假定参数值 |
reset_val |
text |
RESET 会将参数重置为当前会话中的值 |
sourcefile |
text |
设置当前值的配置文件(对于从配置文件以外的其他来源设置的值,或者由既不是超级用户也不是pg_read_all_settings 成员的用户检查的值,则为 null);在配置文件中使用include 指令时很有帮助 |
sourceline |
integer |
配置文件中的行号,当前值设置为该值(对于从非配置文件的源设置的值,或者由既不是超级用户也不是pg_read_all_settings 成员的用户检查的值,则为空)。 |
pending_restart |
boolean |
true 如果配置文件中的值已更改,但需要重新启动;否则false 。 |
context
有几种可能的值。为了降低更改设置的难度,它们是:
internal
- 这些设置不能直接更改。它们反映了内部确定的值。通过使用不同的配置选项重建服务器,或更改提供给
initdb
的选项,可以调整其中的一些。
- 这些设置不能直接更改。它们反映了内部确定的值。通过使用不同的配置选项重建服务器,或更改提供给
postmaster
- 这些设置只能在服务器启动时应用,因此任何更改都需要重新启动服务器。这些设置的值通常存储在
postgresql.conf
文件中,或者在启动服务器时在命令行中传递。当然,也可以在服务器启动时设置任何较低的context
类型的设置。
- 这些设置只能在服务器启动时应用,因此任何更改都需要重新启动服务器。这些设置的值通常存储在
sighup
- 可以在
postgresql.conf
中更改这些设置,而无需重新启动服务器。将 SIGHUPsignal 发送给邮局主管,以使其重新读取postgresql.conf
并应用更改。邮政局长还将 SIGHUPsignal 转发给其子进程,以使它们都获取新值。
- 可以在
superuser-backend
- 可以在
postgresql.conf
中更改这些设置,而无需重新启动服务器。也可以在连接请求数据包中为特定会话设置它们(例如,通过 libpq 的PGOPTIONS
环境变量),但前提是连接用户是超级用户。但是,这些设置在会话启动后永远不会改变。如果您在postgresql.conf
中更改它们,请将 SIGHUPsignal 发送给邮局主管,以使其重新读取postgresql.conf
。新值将仅影响随后启动的会话。
- 可以在
backend
- 可以在
postgresql.conf
中更改这些设置,而无需重新启动服务器。也可以在连接请求包中为特定会话设置它们(例如,通过 libpq 的PGOPTIONS
环境变量);任何用户都可以对其会话进行此类更改。但是,这些设置在会话启动后永远不会改变。如果您在postgresql.conf
中更改它们,请将 SIGHUPsignal 发送给邮局主管,以使其重新读取postgresql.conf
。新值将仅影响随后启动的会话。
- 可以在
superuser
- 这些设置可以从
postgresql.conf
设置,也可以在会话中通过SET
命令设置;但只有超级用户可以通过SET
进行更改。postgresql.conf
中的更改仅在未使用SET
构建会话本地值的情况下才会影响现有会话。
- 这些设置可以从
user
- 这些设置可以从
postgresql.conf
设置,也可以在会话中通过SET
命令设置。允许任何用户更改其本地会话值。postgresql.conf
中的更改仅在未使用SET
构建会话本地值的情况下才会影响现有会话。
- 这些设置可以从
有关更改这些参数的各种方法的更多信息,请参见Section 19.1。
pg_settings
视图不能插入或删除,但可以更新。应用于pg_settings
行的UPDATE
等效于对该命名参数执行SET命令。更改仅影响当前会话使用的值。如果在事务中发出UPDATE
且随后中止该事务,则回滚该事务时UPDATE
命令的作用会消失。一旦提交了周围的事务,效果将一直持续到会话结束,除非被另一个UPDATE
或SET
覆盖。