我们通常倾向于根据GUC参数的名称直观地去猜测它的涵义,而很少去细看官方文档。这种大腿思维的直觉可能会引起一些误解,因此社区也一直把参数命名优化作为一项持续性的改进工作。
从PG各大版本新特性的发布也能看到一些参数名称发生变更或者废弃,本文对几个翻新及废弃的参数整理如下:
版本16重命名force_parallel_mode
16版本调整force_parallel_mode参数的名称为debug_parallel_query。
有些用户会认为这个参数是开启并行查询的开关,这其实并不准确。它只是确保优化器会进行相关的考量,最终还是受cost成本的影响,而不是强迫优化器选择并行执行计划。
版本16重命名logical_replication_mode
16版本正式发布之前,新增的开发参数logical_replication_mode可配合开始解码,默认值为buffered,保持以前版本的兼容性。配置为immediate后,不需要等logical_decoding_work_mem填满可立即解码。
正式发布后参数更名为debug_logical_replication_streaming
版本13重命名wal_keep_segments
13版本重命名wal_keep_segments为wal_keep_size,计量单位更加明确。
版本10细化min_parallel_relation_size
10版本对min_parallel_relation_size参数拆分relation为table和index,可分别控制表和索引的并行设置。
min_parallel_table_scan_size min_parallel_index_scan_size
复制
版本9.6简化wal_level的选项值
9.6版本之前,对区分设置archive与hot_standby这两个选项一直争论不断,从9.6版本开始,这两个选项被优化存储为replica,不过archive与hot_standby也可以进行兼容性设置。
关于这个参数有些PG的考题大家也是有一些争论。
版本9.5拆分checkpoint_segments参数
9.5版本之前,checkpoint_segments参数既可以控制什么开始做checkpoint,同时也控制循环覆盖使用WAL文件的个数。
从9.5版本开始,这两个功能独立为两个参数分别进行控制。
max_wal_size min_wal_size
复制
废弃或过时的参数
下面是各版本因一些原因而删除的参数
- 版本17删除db_user_namespace参数
db级的用户功能实际很少有使用。 - 版本17删除old_snapshot_threshold参数
该参数引起较多bug,尤其在长事物以及逻辑复制场景,容易引起一些费解的现象,社区表示对这个功能准备工作做的不够充分,将来再重新提供"snapshot too old" 的功能。 - 版本17删除trace_recovery_messages参数
该参数使用场景很少。 - 版本16删除promote_trigger_file参数
该参数从12版本引入,用于替代trigger_file参数配置触发备库升主。同时12版本也提供了更便捷的pg_promote()函数,或者使用pg_ctl promote命令来提升备库为主库。该参数以文件触发方式效率较低。 - 版本16删除vacuum_defer_cleanup_age参数
对于多数人很难合理设置其大小,很难起到降低流复制冲突的作用。 - 版本16删除lc_collate、lc_ctype参数
初始化时设置的这两个参数是全局的本地化参数,运行期间也不可修改,只读的变量已经没有意义。 - 版本15删除stats_temp_directory参数
统计信息在15版本以纯内存方式集成到内核,该参数已无意义。 - 版本14删除vacuum_cleanup_index_scale_factor参数
该参数其实无法发挥作用,并且vacuum也增加了控制选项。 - 版本12删除default_with_oids参数
不再允许使用表的行标识oid系统字段,这并不可靠。