17.15. 开发人员选项

下面的选项目的是在 PostgreSQL 代码上使用, 并且在某些情况下可以帮助恢复严重损坏了的数据库。 在生产环境里没有使用这些设置的理由。 因此,我们把他们从样例 postgresql.conf 文件中排除了出去。 请注意许多这些选项要求特殊的源代码编译标志才能运转。

debug_assertions (boolean)

打开各种断言检查。这是调试助手。如果你经历了奇怪的问题或者崩溃, 那么你可能会想把这个打开,因为它可能暴露编程的错误。 要使用这个选项,我们必须在制作 PostgreSQL 的时候定义宏 USE_ASSERT_CHECKING (通过 configure 选项 --enable-cassert 完成)。 请注意,如果带着断言打开的选项编译 PostgreSQL, 那么 debug_assertions 缺省就是 on 的。

pre_auth_delay (integer)

如果为非零,那么在一个新的服务器进程派生出来之后,就会延迟这么多秒,然后才会继续认证过程。 这样就给我们一个机会用调试器附着在一个服务器进程上跟踪认证里面的异常行为。

trace_notify (boolean)

LISTENNOTIFY 命令生成大量调试输出。 client_min_messages 或者 log_min_messages 必须是 DEBUG1 或者更低才能把这些输出分别发送到客户端或者服务器日志。

trace_sort (boolean)

如果打开,发出在排序操作中的资源使用的有关信息。 这个选项只有在编译 PostgreSQL 的时候定义了 TRACE_SORT 宏的时候才可用。(不过,目前 TRACE_SORT 缺省就是定义了的。)

trace_locks (boolean)
trace_lwlocks (boolean)
trace_userlocks (boolean)
trace_lock_oidmin (boolean)
trace_lock_table (boolean)
debug_deadlocks (boolean)
log_btree_build_stats (boolean)

各种其它的代码跟踪和调试选项。

wal_debug (boolean)

如果打开,打开 WAL 相关的调试输出。 只有在编译 PostgreSQL 的时候打开了 WAL_DEBUG 宏的情况下,这个选项才可用。

zero_damaged_pages (boolean)

如果侦测到一个损坏了的页面头通常会导致 PostgreSQL 报告一个错误,并且退出当前命令。把 zero_damaged_pages 设置为开则令系统报告一个警告,把损坏的页面填充零,然后继续处理。 这种行为会破坏数据,也就是所有在已经损坏页面上的行。 但是它允许你绕开坏页面然后从表中还有的未损坏的页面上继续检索数据行。 因此它在因为硬件或者软件错误导致的崩溃中进行恢复是很有用的。 通常你不应该把它设置为开,除非你已经彻底放弃从崩溃底页面中恢复数据。 缺省的设置是 off,并且只有超级用户可以改变它。