Synchronous Commit

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 と区別するのに役立ちます。