47.66. pg_settings
pg_settings
提供了对服务器运行时参数的访问。 它实际上是SHOW和SET命令的另外一个接口。 它还提供一些用SHOW
不能直接获取的参数的访问,比如最大和最小值。
Table 47-67. 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 |
该参数允许的最小值(非数字值为 null) |
max_val |
text |
这个参数允许的最大的数值(非数字值为 null) |
enumvals |
text[] |
枚举参数允许的值(非枚举值为null) |
boot_val |
text |
如果参数没有设置则为服务器启动时假设的参数值 |
reset_val |
text |
RESET 在当前会话中将重设的参数值 |
sourcefile |
text |
设置当前值的配置文件(从源码而不是配置文件设置值或当通过非超级用户检查时为null); 当在配置文件中使用include 指令时是有帮助的。 |
sourceline |
integer |
设置当前值的配置文件中的行编码 (从源码而不是配置文件设置值或当通过非超级用户检查时为null) |
有几个context
的可能值。以减少困难的改变设置的顺序,它们是:
internal
不能直接更改这些设置;它们反映了内部确定的值。其中的一些可以通过用不同的配置选项重建服务器, 或通过改变提供给initdb
的选项来更改。
postmaster
这些选项只在服务器启动时使用,所以任何改变都需要重启服务器。这些设置的值通常存储在 postgresql.conf
文件中,或当服务器启动时传递给命令行。 当然,带有任何低context
类型的设置也可以在服务器启动时设置。
sighup
这些设置可以在postgresql.conf
中改变而不用重启服务器。 发送一个SIGHUP信号到主进程使其重读postgresql.conf
并应用改变。主进程也将SIGHUP信号传递给它的子进程, 这样它们所有都使用新值。
backend
这些设置可以在postgresql.conf
中改变而不用重启服务器; 它们也可以在连接需求包中为特定的会话设置(例如,通过libpq的 PGOPTIONS
环境变量)。不过,这些设置在会话启动后永远不会改变。 如果你在postgresql.conf
中改变了它们,那么发送一个SIGHUP 信号到主进程使其重读postgresql.conf
。新值将只影响随后加载的会话。
superuser
这些值可以在postgresql.conf
中设置,或在一个会话中通过SET
命令设置;但是只有超级用户可以通过SET
改变它们。在postgresql.conf
中改变它们将只在没有会话本地值是使用SET
建立的时影响现有会话。
user
这些值可以在postgresql.conf
中设置,或在一个会话中通过SET
命令设置。允许任何用户改变他们的会话本地值。postgresql.conf
中的改变将只在没有会话本地值是使用SET
建立的时影响现有会话。
参阅Section 18.1获取更多关于改变这些参数的各种方式的信息。
不能对pg_settings
视图进行插入或者删除,但是可以更新。 对pg_settings
中的一行进行 UPDATE
等效于在该命名参数上执行SET命令。这个修改只影响当前会话使用的数值。 如果在一个最后退出的事务中发出了UPDATE
命令,那么UPDATE
命令的效果将在事务回滚之后消失。一旦包围它的事务提交,这个效果将固化,直到会话结束, 除非由其它的UPDATE
或SET
命令覆盖。