Internal Timing of Operations#
さまざまなモードがどのように動作するかをより深く理解するために、従来の物理的ストリーミングレプリケーションPSRと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 Group Commit |
apply first |
before COMMIT on origin |
PGD CAMO |
apply first |
before COMMIT on origin |