↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.0 / 6.5 / 6.4
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

27.3. 使用 pg_options #

注意

由 Massimo Dal Zotto 贡献

可选文件 data/pg_options 包含后端用来控制跟踪 消息和其他可调后端参数的运行时选项。后端收到 SIGHUP 信号时会重新 读取该文件,因此无需重启 Postgres 就能即时更改运行时选项。此文件 中指定的选项可以是跟踪包 (backend/utils/misc/trace.c)使用的调试标志, 也可以是后端可用来控制自身行为的数值参数。

所有 pg_options 在后端启动时初始化为零。新的或修改过的选项会被 所有新启动的后端读取。要让更改对所有正在运行的后端生效,需要向 postmaster 发送 SIGHUP。该信号会被自动发送给所有后端。我们也可以 通过直接向特定后端发送 SIGHUP,只为该后端激活更改。

pg_options 也可以用 Postgres 的 -T 开关指定:

postgres options -T "verbose=2,query,hostlookup-"
    

用于打印错误和调试消息的函数现在可以利用 syslog(2) 设施。打印到 stdout 或 stderr 的 消息带有包含后端 pid 的时间戳前缀:

#timestamp          #pid    #message
980127.17:52:14.173 [29271] StartTransactionCommand
980127.17:52:14.174 [29271] ProcessUtility: drop table t;
980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full
980127.17:52:14.186 [29286] Async_NotifyHandler
980127.17:52:14.186 [29286] Waking up sleeping backend process
980127.19:52:14.292 [29286] Async_NotifyFrontEnd
980127.19:52:14.413 [29286] Async_NotifyFrontEnd done
980127.19:52:14.466 [29286] Async_NotifyHandler done
    

这种格式提高了日志的可读性,使人们能准确了解哪个后端在什么时间 做什么。它也让编写监视日志以检测数据库错误或问题、或计算事务时间 统计的简单 awk 或 perl 脚本变得更容易。

打印到 syslog 的消息使用日志设施 LOG_LOCAL0。syslog 的使用可以由 syslog pg_option 控制。遗憾的是,许多函数直接调用 printf() 把消息打印到 stdout 或 stderr,这类 输出无法重定向到 syslog,也无法带有时间戳。明智的做法是把所有对 printf 的调用替换为 PRINTF 宏,并把输出到 stderr 的做法改为使用 EPRINTF,这样我们就能以统一的方式控制所有输出。

pg_options 文件的格式如下:

# comment
option=integer_value  # set value for option
option                # set option = 1
option+               # set option = 1
option-               # set option = 0
    

注意 keyword 也可以是 backend/utils/misc/trace.c 中定义的选项名的 缩写。

例 27.1. pg_options 文件

例如,我的 pg_options 文件包含以下值:

verbose=2
query
hostlookup
showportnumber
      


27.3.1. 可识别的选项

当前定义的选项有:

all

全局跟踪标志。允许的值有:

0

单独启用各跟踪消息

1

启用所有跟踪消息

-1

禁用所有跟踪消息

verbose

详尽程度标志。允许的值有:

0

无消息。这是默认值。

1

打印信息性消息。

2

打印更多信息性消息。

query

查询跟踪标志。允许的值有:

0

不打印查询。

1

在一行内打印压缩的查询。

4

打印完整查询。

plan

打印查询计划。

parse

打印解析器输出。

rewritten

打印重写后的查询。

pretty_plan

美化打印查询计划。

pretty_parse

美化打印解析器输出。

pretty_rewritten

美化打印重写后的查询。

parserstats

打印解析器统计。

plannerstats

打印规划器统计。

executorstats

打印执行器统计。

shortlocks

目前未用,但为将来启用特性所需。

locks

跟踪锁。

userlocks

跟踪用户锁。

spinlocks

跟踪自旋锁。

notify

跟踪通知函数。

malloc

目前未用。

palloc

目前未用。

lock_debug_oidmin

锁跟踪的最小关系 oid。

lock_debug_relid

如果非零,为锁跟踪的关系 oid。

lock_read_priority

目前未用。

deadlock_timeout

死锁检查计时器。

syslog

syslog 标志。允许的值有:

0

消息发到 stdout/stderr。

1

消息发到 stdout/stderr 和 syslog。

2

消息只发到 syslog。

hostlookup

在 ps_status 中启用主机名查找。

showportnumber

在 ps_status 中显示端口号。

nofsync

按后端禁用 fsync。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。