暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL运维—pg_setting表-context详解

原创 李先生 2023-02-27
1066

PostgreSQL运维—pg_setting表-context详解


该视图pg_settings提供对服务器运行时参数的访问。它本质上是SHOWSET命令的替代接口。它还提供了对无法直接从 中获得的每个参数的一些事实的访问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也可以在服务器启动时设置任何较低类型的设置。

  • sighup

    postgresql.conf无需重新启动服务器即可更改这些设置。向 postmaster发送SIGHUP信号,使其重新读取postgresql.conf并应用更改。postmaster 还会将SIGHUP信号转发给它的子进程,以便它们都获得新值。

  • superuser-backend

    postgresql.conf无需重新启动服务器即可更改这些设置。它们也可以为连接请求数据包中的特定会话设置(例如,通过libpq的PGOPTIONS环境变量),但前提是连接用户是超级用户。但是,这些设置在会话启动后永远不会更改。如果在 中更改它们postgresql.conf,请向 postmaster发送SIGHUP信号以使其重新读取postgresql.conf。新值只会影响随后启动的会话。

  • backend

    postgresql.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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论