hot_standby_feedback
リードレプリカが必要なものをプライマリに伝え、長時間のクエリが途中でキャンセルされないようにする設定。代償はプライマリ側のブロートで払うことになる。
衝突が起きるのは、プライマリがレプリカの動作を何も知らないからだ。プライマリのVACUUMは、自分の判断では誰も必要としない古い行バージョンを削除する。その変更がレプリカに届くと、レポート用のクエリがまさにその行を読んでいる最中でも、適用しなければならない。結果として「リカバリとの競合によりステートメントがキャンセルされた」というエラーになり、クエリを実行した人に説明するのは難しい。フィードバックを有効にすると、レプリカは実行中の最古のトランザクションIDをプライマリに送り、プライマリは削除を控える。欠点はその裏返しで、レプリカに放置されたクエリが、プライマリのクリーンアップを何時間も止めかねない。