《機械翻訳》トランザクションは、BEGIN
またはSTART TRANSACTION
を使用して明示的に作成し、COMMIT
またはROLLBACK
を使用して終了します。
明示的なトランザクションの外部のSQL文は、自動的に単一文トランザクションを使用します。
《機械翻訳》各トランザクションは、一意のVirtualTransactionId
(またはvirtualXID
またはvxid
)で識別されます。
これは、バックエンドID (またはbackendID
)と、各バックエンドに固有のローカル番号で構成されるlocalXID
と呼ばれる、連続した番号で構成されます。
たとえば、仮想トランザクションID 4/12532
のbackendID
は4
で、localXID
は12532
です。
《機械翻訳》非仮想TransactionId
(またはxid
)、例えば278394
は、PostgreSQLクラスタ内のすべてのデータベースでグローバルカウンタが使用するトランザクションから連続的に割り当てられます。
この割り当ては、トランザクションがデータベースに最初に書き込みを行ったときに行われます。
これは、トランザクションが最初にデータベースに書き込みを開始した順序とは異なる場合があることに注意してください。
特に、トランザクションがデータベース読み取りのみを実行する文で開始した場合、トランザクションが最初のデータベース書き込みを実行するより前に、トランザクションが最初のデータベース書き込みを開始した順序とは異なる場合があります。
《機械翻訳》内部トランザクションID型xid
は32ビット幅で、ラップアラウンドごとに4,000,000,000トランザクション増加します。
32ビットエポックは各ラップアラウンド中にインクリメントされます。
また、このエポックを含み、インストールのライフタイム中にラップアラウンドしない64ビット型xid8
もあります。
関数表 9.80はxid8
値を返します。
XIDはPostgreSQLのMVCC同時実行性メカニズムとストリーミングレプリケーションの基礎として使用されます。
《機械翻訳》(仮想)xidを持つトップレベルのトランザクションがコミットすると、pg_xact
ディレクトリにコミット済みとしてマークされます。
track_commit_timestampが有効な場合、追加情報はpg_commit_ts
ディレクトリに記録されます。
《機械翻訳》vxid
とxid
に加えて、準備されたトランザクションにはグローバルトランザクション識別子(GID)も割り当てられます。
GIDは最大200バイトの文字列リテラルで、現在準備されている他のトランザクションと一意でなければなりません。
GIDからxidへのマッピングはpg_prepared_xacts
に示されています。