Synchronous Commit#
コミットスコープの種類 SYNCHRONOUS COMMIT
概要#
PGDのSYNCHRONOUS COMMIT
は、基になるオペレーションでのPostgreSQLの
synchronous_commit オプションに似た方法で動作するコミットスコープの種類です。ただし、
PostgreSQLオプションとは異なり、コミットスコープとして構成され、PGDでの構成と対話が簡単です。
GROUP COMMIT やCAMO
などの他のコミットスコープの種類とは異なり、 SYNCHRONOUS COMMIT
オペレーションのトランザクションは2フェーズコミット2PCトランザクションに変換されません。これらはPostgres
synchronous_commit のように動作します。
例#
この例では、このコミットスコープが使用されている場合、left_dc
グループ内のノードはSYNCHRONOUS COMMIT を使用して、left_dc
グループ内の他のノードに変更をレプリケートします。 left_dc
グループ内のノードの大部分を検索して、トランザクションをコミットしたことを確認します。
SELECT bdr.create_commit_scope(
commit_scope_name := example_sc_scope,
origin_node_group := left_dc,
rule := MAJORITY (left_dc) SYNCHRONOUS COMMIT,
wait_for_ready := true
);
構成#
SYNCHRONOUS COMMIT は、オプションのDEGRADE ON
句をサポートしています。特定の構成パラメーターについては SYNCHRONOUS COMMIT コミットスコープリファレンスを参照してください。または、オプションの低下に関しては Degrading commit scope rules を参照してください。
確認#
Confirmation level |
PGD Synchronous Commit handling |
|---|---|
received |
A remote PGD node confirms the transaction once it's been fully received and is in the in-memory write queue. |
replicated |
Same behavior as received. |
durable |
Confirms the transaction after all of its changes are flushed to disk. Analogous to synchronous_commit = on in legacy synchronous replication. |
visible (default) |
Confirms the transaction after all of its changes are flushed to disk and it's visible to concurrent transactions. Analogous to synchronous_commit = remote_apply in legacy synchronous replication. |
詳細#
現在、SYNCHRONOUS COMMIT
は、コミットスコープルール構文の確認レベルを使用しません。
コミットスコープルールでは、元のキーワードSYNCHRONOUS_COMMIT
はSYNCHRONOUS COMMIT
にエイリアスになりました。アンダースコアの代わりにスペースを使用すると、PostgresのネイティブSYNCHRONOUS_COMMIT
と区別するのに役立ちます。