下列参数用于PostgreSQL源代码的开发工作,在某些情况下也用于辅助恢复严重损坏的数据库。 没有理由在生产数据库中使用它们。因此,它们被排除在示例postgresql.conf文件之外。 请注意,许多参数需要特殊的源代码编译标志才能起作用。
allow_in_place_tablespaces (boolean) #允许将表空间创建为pg_tblspc内的目录,当CREATE TABLESPACE命令提供空位置字符串时。 这旨在允许测试主库和备库在同一台机器上运行的复制场景。这样的目录可能会混淆备份工具,因为这些工具期望在该位置只找到符号链接。 只有超级用户能更改这个设置。
allow_system_table_mods (boolean) #允许修改系统表的结构。此参数由initdb使用。 此参数只能在服务器启动时设置。
ignore_system_indexes (boolean) #读取系统表时忽略系统索引(但是修改系统表时依然同时更新索引)。这在从被破坏的系统索引中恢复数据的时有用。这个参数在会话开始之后不能被更改。
post_auth_delay (integer) #如果非零,则在新服务器进程启动并执行认证过程之后,延迟指定的秒数。 这旨在给开发者一个机会,用调试器附加到服务器进程上。 此参数在会话开始之后不能更改。
pre_auth_delay (integer) #如果非零,则在新服务器进程刚刚派生之后、执行认证过程之前,延迟指定的秒数。 这旨在给开发者一个机会,用调试器附加到服务器进程上,跟踪认证过程中的异常行为。 此参数只能在postgresql.conf文件中或在服务器命令行上设置。
trace_notify (boolean) #为LISTEN和NOTIFY命令生成大量调试输出。client_min_messages和log_min_messages必须是DEBUG1或者更低才能把这种输出分别发送到客户端或者服务器日志。
trace_recovery_messages (enum) #启用原本不会记录的恢复相关调试输出。此参数允许用户覆盖log_min_messages的常规设置,但仅针对特定消息。 它旨在用于调试热备。有效值为DEBUG5、DEBUG4、 DEBUG3、DEBUG2、DEBUG1和LOG。 默认值LOG完全不影响是否记录消息的决定。其他值会让该优先级或更高优先级的恢复相关调试消息 按LOG优先级记录;对于log_min_messages的常见设置,这会无条件地将它们发送到服务器日志。 此参数只能在postgresql.conf文件中或在服务器命令行上设置。
trace_sort (boolean) #如果打开,发出在排序操作中的资源使用的相关信息。只有在编译PostgreSQL时定义了TRACE_SORT宏, 这个参数才可用(不过,当前在默认情况下就定义了TRACE_SORT)。
trace_locks (boolean) #如果开启,发出锁使用情况的信息。被转储信息中包括锁操作的类型、锁的类型和 被锁或被解锁对象的唯一标识符。同样包括的还有已经授予这个对象的锁类型的位掩码和 等待这个对象的锁类型的位掩码。对每一种锁类型,已授权锁和等待锁的计数也会被一起转储。一个日志文件输出的示例如下:
LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(AccessShareLock)
LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1
wait(0) type(AccessShareLock)
LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(AccessShareLock)
LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(INVALID)
被转储结构体的详细信息可以在src/include/storage/lock.h中找到。
只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。
trace_lwlocks (boolean) #如果开启,发出轻量级锁的使用信息。轻量级锁主要是为了提供对共享内存数据结构的互斥访问。
只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。
trace_userlocks (boolean) #如果开启,发出关于用户锁使用的信息。与trace_locks的输出一样,但只用于咨询锁。
只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。
trace_lock_oidmin (integer) #如果设置,不会跟踪小于这个 OID 的锁(用于避免在系统表上的输出)。
只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。
trace_lock_table (integer) #无条件地跟踪此表(OID)上的锁。
只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。
debug_deadlocks (boolean) #如果设置,当死锁超时发生时,转储所有当前锁的信息。
只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。
log_btree_build_stats (boolean) #如果设置,会记录 B-树操作上的系统资源使用情况统计(内存和 CPU)。
只有在编译PostgreSQL时定义了BTREE_BUILD_STATS宏, 这个参数才可用。
wal_consistency_checking (string) #这个参数被设计用来检查WAL重做例程中的缺陷。当这个参数被启用时,被修改的任何缓冲区的整页镜像及其WAL记录都被加入到记录中。如果该记录后来被重放,系统将首先应用每个记录然后测试该记录修改的缓冲区是否符合存储的镜像。在某些情况下(例如提示位),小的变动是可以接受的,并且会被忽略。任何预期之外的差别都将导致致命错误,最后中止恢复。
默认值为空字符串,表示禁用该功能。可以设置为all以检查所有记录, 或者设置为逗号分隔的资源管理器列表,以仅检查来自这些资源管理器的记录。目前支持的资源管理器有 heap、heap2、btree、hash、 gin、gist、sequence、spgist、 brin和generic。只有超级用户才能更改此设置。
wal_debug (boolean) #如果被打开,WAL 相关的调试输出将被发出。只有在编译PostgreSQL时定义了WAL_DEBUG宏的情况下,这个参数才可用。
ignore_checksum_failure (boolean) #只有当data checksums被启用时才有效。
在读取过程中检测到校验和失败通常会导致PostgreSQL报告错误,中止当前事务。 将ignore_checksum_failure设置为on会导致系统忽略失败(但仍然报告警告),并继续处理。 这种行为可能导致崩溃,传播或隐藏损坏,或其他严重问题。然而,它可能允许您跳过错误, 并检索可能仍然存在于表中的未损坏的元组,如果块头仍然正常。如果头部损坏,即使启用此选项也会报告错误。 默认设置为off。 只有超级用户能更改这个设置。
zero_damaged_pages (boolean) #检测到损坏的页面头通常会导致PostgreSQL报告错误,中止当前事务。 将zero_damaged_pages设置为on会导致系统报告警告,将内存中的损坏页面清零,并继续处理。 这种行为会破坏数据,即损坏页面上的所有行。但是,它确实允许您跳过错误,并从表中可能存在的未损坏页面中检索行。 如果由于硬件或软件错误而发生损坏,这对于恢复数据很有用。通常在放弃从表的损坏页面恢复数据的希望之前,不应将其设置为on。 清零的页面不会强制写入磁盘,因此建议在再次关闭此参数之前重新创建表或索引。默认设置为off。 只有超级用户能更改这个设置。
jit_debugging_support (boolean) #如果LLVM有所需要的功能,用GDB注册所生成的函数。这会让调试更加容易。默认设置是off。这个参数只能在服务器启动时设置。
jit_dump_bitcode (boolean) #将生成的LLVM IR写入文件系统,位于data_directory内。 这仅对于在JIT实现内部工作时有用。默认设置为off。 只有超级用户能更改这个设置。
jit_expressions (boolean) #当JIT编译被激活时(见Section 32.2),确定表达式是否用JIT编译。默认值是on。
jit_profiling_support (boolean) #如果LLVM有所需的功能,发出需要的数据以允许perf对JIT生成的函数画像。 这会写出文件到$HOME/.debug/jit/中,如果需要,由用户负责对其执行清除。 默认设置是off。 这个参数只能在服务器启动时设置。
jit_tuple_deforming (boolean) #当JIT编译被激活时(见Section 32.2),确定元组拆解是否被JIT编译。默认值是on。