Internal timing of operations#
さまざまなモードがどのように動作するかをより深く理解するために、従来の物理的ストリーミングレプリケーションPSRとPGDはさまざまな方法でトランザクションを適用することを知っておくと役立ちます。これらの順序の違いは、パフォーマンス、耐久性、および一貫性に実際的な意味を持ちます。 PSRよりPGDを選択する場合のより広範な比較については、
Choosing between PSR and PGD を参照してください。
レガシーPSRでは、操作の順序は次のとおりです。
オリジンはコミットレコードをWALにフラッシュし、トランザクションをローカルに認識できるようにします。
ピアノードは変更を受信し、書き込みを発行します。
ピアは、受信した変更をディスクにフラッシュします。
ピアは変更を適用し、ピアでトランザクションを認識できるようにします。
変更は、変更を適用する前にディスクに書き込まれることに注意してください。
PGDでは、デフォルトでとLag Controlを使用すると、操作の順序が異なります。これらの場合、トランザクションがピアのディスクにフラッシュされる前に、変更はピアで可視されるようになります。
オリジンはコミットレコードをWALにフラッシュし、トランザクションをローカルに認識できるようにします。
ピアノードは、メモリ内の適用キューに変更を受信します。
ピアは変更を適用し、ピアでトランザクションを認識できるようにします。
ピアはディスクにフラッシュすることによりトランザクションを永続化します。
PGDのクォーラムコミット、グループコミット、およびCAMOの場合、オリジンノードはトランザクションをローカルに表示する前に特定の数の確認を待機します。操作の順序は次のとおりです。
Originは、準備または事前コミットレコードをWALにフラッシュします。
ピアノードは、メモリ内の適用キューに変更を受信します。
ピアは変更を適用し、ピアでトランザクションを認識できるようにします。
ピアはディスクにフラッシュすることによりトランザクションを永続化します。
オリジンはコミットして、トランザクションをローカルに可視化します。
次の表は、違いをまとめたものです。
Variant |
Order of apply vs persist |
Replication before or after commit |
|---|---|---|
PSR |
persist first |
after WAL flush of commit record |
PGD Async |
apply first |
after WAL flush of commit record |
PGD Lag Control |
apply first |
after WAL flush of commit record |
PGD Quorum Commit |
apply first |
before COMMIT on origin |
PGD Group Commit |
apply first |
before COMMIT on origin |
PGD CAMO |
apply first |
before COMMIT on origin |