ポストバックはMVCCルールに従います。したがって、テーブル上で実行されるクエリは、テーブル上で発生する書き込みと競合しません。クエリは、クエリを実行した時点のスナップショットに基づいて結果を返します。クエリとレプリケーションが同時に行われているときにPostgresqlのレプリケーションが一時停止する
私はマスターとスレーブを持っています。スレーブは、アナリストがクエリを実行し、分析を実行するために使用されます。スレーブがレプリケートしているときとアナリストが同時にクエリを実行しているとき、私は長い間レプリケーションの遅れを見ることができます。クエリが長時間実行されていると、レプリケーションは長時間遅くなり、マスターの書き込み回数かなり高ければ、私はWALファイルを失うことになり、複製はより長く進むことができます。私は別のスレーブをスピンアップさせるだけです。なぜこれが起こるのですか?姿勢でクエリとレプリケーションを同時に行う方法を教えてください。これを実現するために適用できるパラメータ設定はありますか?マスターはまだレプリカ上で実行中のクエリが必要とする上書きされたデータ・ブロックをした可能性があるため、
追加するには、前回のレプリケーションはシングルスレッドです...もし私がスレーブ上でテーブルAを照会しているのであれば、テーブルAはレプリケーションのためのロックを取得するでしょう。今、テーブルBにマスタで起こっている挿入/更新がある場合、テーブルAの背後にあるWALファイルを待っています...それで、テーブルAのクエリが完了しない限り、レプリケーションは続行できません...マルチスレッドの場合は、それはテーブルAとは何の関係もなく、遅れずに進めることができることを知っています...私はpostgresのレプリケーションメカニズムを理解するのは正しいですか? – Ramanan
"レプリケーションが長時間遅れ、マスターの書き込み回数が非常に多くなった場合、WALファイルが失われ、レプリケーションが長くなる可能性があります"ということは、レプリケーションが正しく設定されていないことを示しています。なぜもっと詳細で質問を更新しないのですか?あなたの設定ファイルからの抜粋も役に立ちます。 – e4c5
また、この質問はdba.stackexchange.comより適しているかもしれません。 – e4c5