Comparing durability options
============================

比較
----

PGDで使用可能な同期レプリケーションのオプションのほとんどは、さまざまなレベルの同期を許可し、パフォーマンスとノードまたはネットワークの停止に対する保護の間のさまざまなトレードオフを提供します。

次の :ref:`確認レベル <確認レベル>` リストは、その確認レベルが有効なときにユーザーが表示することを予期すべきものと、それがパフォーマンス、耐久性、一貫性にどのように影響を与える可能性があるかを説明します。

..  Note::
   :ref:`How Quorum Commit works <How Quorum Commit works>` は、`ON DURABLE` および`ON VISIBLE` のみをサポートしています。 `ON VISIBLE` がデフォルトです。

受信時
^^^^^^

**Expect**
ピアノードは変更を受信しました。ピアノードのタプルストアでは何も更新されず、ストレージに書き込まれません。

受信時の確認は、通常に動作しているピアが、完全または部分的なネットワークの停止に直面しても、最終的にそれ以上の通信を必要とせずにトランザクションを適用できることを意味します。この確認には永続ストレージが関係しないため、ピアノードがクラッシュしてもトランザクションの再送信が必要になる場合があります。

**の場合**
トランザクションの起点ノードは、トランザクションの受信を待機するだけです。トランザクションが大きい場合、システムのTPSパフォーマンスが向上する場合があります。

**対** 古い読み取りの可能性の増加。
Postgresサーバーまたはオペレーティングシステムのクラッシュが発生すると、データが失われる可能性があるため、全体的にON
RECEIVEDは堅牢ではありません。

レプリケートについて
^^^^^^^^^^^^^^^^^^^^

**Expect**
ピアノードは変更を受信し、タプルストアに適用しました。変更はストレージに書き込まれましたが、ストレージはディスクにフラッシュされていません。

レプリケーションの確認は、ピアが変更を受信して適用したことを意味します。これらの変更はストレージに書き込まれますが、オペレーティングシステムのキャッシュとバッファーに残っています。システムはそれらをディスクにまだ永続化していません。

**For**
このチェックポイントは、トランザクション処理のタイムラインのさらに下方にあります。オリジンノードは、トランザクションが適用されるのを待機するだけで、永続化されません。

**対** ON
RECEIVEDよりも古い読み取りの可能性がわずかに低くなります。また、 ON
REPLICATEDでは、データはPostgresのクラッシュから生き残ることができますが、オペレーティングシステムのクラッシュからは生き残れません。

ON DURABLE
^^^^^^^^^^

**Expect**
ピアノードは変更を受信し、タプルストアに適用し、変更をストレージに永続化しました。変更はまだ他のセッションで利用できるようにしていません。

永続的な確認は、トランザクションが書き込まれ、ピアノードのストレージにフラッシュされたことを意味します。これにより、ピアノードのクラッシュと復旧後のデータの損失から保護されます。ただし、セッションが切断して再接続する前にON
DURABLEルールを使用してトランザクションをコミットした場合、トランザクションの変更は再接続されたセッションに可視される保証はありません。

Quorum
Commitコミットスコープ種類と使用する場合、これは変更が可視されることも意味します。

**の場合**
より堅牢で、クラッシュが発生した場合に再送信なしで回復できます。

**Against** フェイルオーバーが発生した場合の一貫性を保証しません。

オンビジブル
^^^^^^^^^^^^

**Expect**
ピアノードは変更を受信して適用し、それらの変更を永続化してストレージにフラッシュしました。

可視性の確認は、トランザクションが完全にリモートで適用されたことを意味します。切断して再接続する前に、セッションがON
VISIBLEルールを使用してトランザクションをコミットした場合、トランザクションの変更は再接続されたセッションに可視されることが保証されます。

**対象** 堅牢で一貫性があります。

**対** パフォーマンスが低下します。
