はじめに
にゃーん。趣味でポスグレをやっている者だ。
この記事はPostgreSQL 16 全部ぬこ Advent Calendar 2022 24日目の記事です。
今回はCommitfest個々の項目ではなく、PostgreSQLパラメータ全般の変更状態を調べてみました。
なお、あくまでも開発途中のものなので、beta版リリースのときには、これよりも大きく変わっている可能性は高いです。
比較対象
今回の記事は、以下のバージョン間のシステムカタログ・ビューの変更状態を調査しました。
- PostgreSQL 15.1
- PostgreSQL-devel
- 12/20朝時点の版
- commit eb60eb08a95eb531f3f2a459c1b623c5ac37ecd3
- CATALOG_VERSION_NO 202212191
パラメータの追加/変更/削除
現時点だとパラメータの変更はそれほど多くないようです。
実質的な変更は削除パラメータが1つ、追加パラメータが2つです。
パラメータ名 | 種別 | 変更内容 |
---|---|---|
client_connection_check_interval | 変更 | categoryがConnection SettingsからTCP Settingsに変更 |
promote_trigger_file | 削除 | リカバリの完了を示すトリガファイルの名前 |
send_abort_for_crash | 追加 | Developer Options |
send_abort_for_kill | 追加 | Developer Options |
tcp_keepalives_count | 変更 | categoryがConnection SettingsからTCP Settingsに変更 |
tcp_keepalives_idle | 変更 | categoryがConnection SettingsからTCP Settingsに変更 |
tcp_keepalives_interval | 変更 | categoryがConnection SettingsからTCP Settingsに変更 |
tcp_user_timeout | 変更 | categoryがConnection SettingsからTCP Settingsに変更 |
promote_trigger_file
このパラメータは、PostgreSQL 12でレプリケーションの手順が変更されたことに伴い追加されたパラメータです。
このパラメータで指定されたトリガファイルを配置してPostgreSQLを起動することでpromoteモードで起動します。しかし、このパラメータを使うことなく、pg_ctl promote
あるいはpg_promote
を使ってスタンバイサーバを昇格することが可能でした。
ところが、PostgreSQL 16からトリガファイル自体が削除されたことに伴い、このパラメータも削除されたようです。
このパラメータの削除に関するpgsql-commiters MLのメールはこれみたいですね。
pgsql: Remove promote_trigger_file.
PostgreSQL 15までpromoteの運用をトリガファイルを使っていたユーザは、この変更による運用方法の変更が必須になります。
send_abort_for_crash/send_abort_for_kill
これらのパラメータはcategoryがDeveloper Options
(開発者向けのオプション)なので、通常のユーザが使うパラメータではありません。
これらのパラメータはたぶん、以下のCommitfest項目が関連していそうです。(深追いはしてないですが)
Commitfest 2023-01:Sending SIGABRT to child processes
send_abort_for_crash
はバックエンドのクラッシュ後に、子プロセスに SIGQUIT ではなく SIGABRT を送信するかどうかを制御するパラメータのようです。
send_abort_for_kill
はスタックした子プロセスに SIGKILL ではなく SIGABRT を送信するかどうかを制御するパラメータのようです。
おわりに
今回は、PostgreSQL 15とPostgreSQL 16とのパラメータ差分を調べてみました。
現時点ではそれほど大きなパラメータの差分はないようですが、トリガファイルに関連するパラメータの削除など、運用に影響するパラメータの変更もあるのでチェックはしておいたほうが良さそうですね。