PostgreSQL运维—pg_setting表-context详解
该视图pg_settings提供对服务器运行时参数的访问。它本质上是SHOW和SET命令的替代接口。它还提供了对无法直接从 中获得的每个参数的一些事实的访问SHOW,例如最小值和最大值。
表结构
| 名称 | 类型 | 描述 |
|---|---|---|
name |
text |
运行时配置参数名称 |
setting |
text |
参数的当前值 |
unit |
text |
参数的隐式单位 |
category |
text |
参数的逻辑组 |
short_desc |
text |
参数的简要说明 |
extra_desc |
text |
附加的、更详细的参数说明 |
context |
text |
设置参数值所需的上下文(见下文) |
vartype |
text |
参数类型 ( bool, enum, integer, real, or string) |
source |
text |
当前参数值的来源 |
min_val |
text |
参数的最小允许值(非数字值为 null) |
max_val |
text |
参数的最大允许值(非数字值为 null) |
enumvals |
text[] |
枚举参数的允许值(非枚举值为 null) |
boot_val |
text |
如果未以其他方式设置参数,则在服务器启动时假定参数值 |
reset_val |
text |
值RESET将在当前会话的参数重新设置为 |
sourcefile |
text |
配置文件中设置了当前值(对于从配置文件以外的源设置的值,或者由既不是超级用户也不是 成员的用户检查时,值为 null pg_read_all_settings);include在配置文件中使用指令时很有帮助 |
sourceline |
integer |
配置文件中当前值设置为的行号(对于从配置文件以外的源设置的值,或者由既不是超级用户也不是 成员的用户检查时为空pg_read_all_settings)。 |
pending_restart |
boolean |
true如果配置文件中的值已更改但需要重新启动;或false以其他方式。 |
context详解
有几个可能的值context。为了降低更改设置的难度,它们是:
-
internal这些设置不能直接更改;它们反映了内部确定的价值观。其中一些可以通过使用不同的配置选项重建服务器或更改提供给
initdb. -
postmaster这些设置只能在服务器启动时应用,因此任何更改都需要重新启动服务器。这些设置的值通常存储在
postgresql.conf文件中,或在启动服务器时通过命令行传递。当然,context也可以在服务器启动时设置任何较低类型的设置。 -
sighuppostgresql.conf无需重新启动服务器即可更改这些设置。向 postmaster发送SIGHUP信号,使其重新读取postgresql.conf并应用更改。postmaster 还会将SIGHUP信号转发给它的子进程,以便它们都获得新值。 -
superuser-backendpostgresql.conf无需重新启动服务器即可更改这些设置。它们也可以为连接请求数据包中的特定会话设置(例如,通过libpq的PGOPTIONS环境变量),但前提是连接用户是超级用户。但是,这些设置在会话启动后永远不会更改。如果在 中更改它们postgresql.conf,请向 postmaster发送SIGHUP信号以使其重新读取postgresql.conf。新值只会影响随后启动的会话。 -
backendpostgresql.conf无需重新启动服务器即可更改这些设置。它们也可以为连接请求数据包中的特定会话设置(例如,通过libpq的PGOPTIONS环境变量);任何用户都可以对他们的会话进行这样的更改。但是,这些设置在会话启动后永远不会更改。如果在 中更改它们postgresql.conf,请向 postmaster发送SIGHUP信号以使其重新读取postgresql.conf。新值只会影响随后启动的会话。 -
superuser这些设置可以
postgresql.conf通过SET命令从或在会话中设置;但只有超级用户才能通过SET.postgresql.conf仅当没有使用 建立会话本地值时,更改才会影响现有会话SET。 -
user这些设置可以
postgresql.conf通过SET命令从或在会话中设置。任何用户都可以更改其会话本地值。postgresql.conf仅当没有使用 建立会话本地值时,更改才会影响现有会话SET。
该pg_settings视图不能插入或删除,但它可以被更新。一个UPDATE施加到一排pg_settings是等效于执行SET上命名的参数的命令。更改仅影响当前会话使用的值。如果UPDATE在后来中止的事务中发出an ,则UPDATE在事务回滚时该命令的效果会消失。一旦周围的事务提交,效果将持续到会话结束,除非被另一个UPDATE或覆盖SET。




