pg_settings #
视图
pg_settings 提供对服务器运行时参数的
访问。
它本质上是
SHOW
和
SET 命令的另一种
接口。
它还提供对每个参数的一些事实的访问,这些事实无法从
SHOW 直接获得,
例如最小值和最大值。
Table 53.25. \1 字段列说明
Column Type Description |
|---|
运行时配置参数的名称 |
参数的当前值 |
参数的隐含单位 |
参数的逻辑分组 |
参数的简要描述 |
关于该参数的附加的更详细描述 |
设置参数值所需的环境(见下文) |
Parameter type ( |
当前参数值的来源 |
参数允许的最小值(非数值时为空) |
参数允许的最大值(非数值时为空) |
枚举参数的允许值(非枚举类型时为空) |
如果参数没有被另行设置,服务器启动时假定的参数值 |
在当前会话中 |
设置当前值时所在的配置文件
(对从配置文件之外的来源设置的值,或由既非超级用户也不具有
|
在配置文件中设置当前值所在的行号
(对从配置文件之外的来源设置的值,或由既非超级用户也不具有
|
如果该值已在配置文件中被更改但需要重启则为
|
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 中更改了它们,
请向 postmaster 发送一个
SIGHUP 信号,使它重新读取
postgresql.conf。
新值将只影响随后启动的会话。
backend
对这些设置的更改可以在
postgresql.conf 中进行,无需重启
服务器。
它们也可以在连接请求包中为特定会话设置
(例如通过
libpq 的
PGOPTIONS
环境变量);任何用户都可以为其会话做这样的更改。
不过,这些设置在会话启动之后从不变化。
如果您在
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 命令的效果会在事务回滚时消失。
一旦外围事务被提交,这些效果将持续到会话结束,
除非被另一个
UPDATE 或
SET 覆盖。
除非定义它们的扩展模块已被执行查询的后端进程加载
(例如,通过在
shared_preload_libraries 中提及、
调用扩展中的一个 C 函数,或
LOAD 命令),
这个视图不会显示
自定义选项。
例如,由于
归档模块
通常只被归档进程加载而非普通会话,
除非采取特殊动作把它们加载进执行查询的后端进程,
这个视图将不会显示这类模块定义的任何自定义选项。