74.1. Transactions and Identifiers #

《機械翻訳》トランザクションは、BEGINまたはSTART TRANSACTIONを使用して明示的に作成し、COMMITまたはROLLBACKを使用して終了します。 明示的なトランザクションの外部のSQL文は、自動的に単一文トランザクションを使用します。

《機械翻訳》各トランザクションは、一意のVirtualTransactionId (またはvirtualXIDまたはvxid)で識別されます。 これは、バックエンドID (またはbackendID)と、各バックエンドに固有のローカル番号で構成されるlocalXIDと呼ばれる、連続した番号で構成されます。 たとえば、仮想トランザクションID 4/12532backendID4で、localXID12532です。

《機械翻訳》非仮想TransactionId(またはxid)、例えば278394は、PostgreSQLクラスタ内のすべてのデータベースでグローバルカウンタが使用するトランザクションから連続的に割り当てられます。 この割り当ては、トランザクションがデータベースに最初に書き込みを行ったときに行われます。 これは、トランザクションが最初にデータベースに書き込みを開始した順序とは異なる場合があることに注意してください。 特に、トランザクションがデータベース読み取りのみを実行する文で開始した場合、トランザクションが最初のデータベース書き込みを実行するより前に、トランザクションが最初のデータベース書き込みを開始した順序とは異なる場合があります。

《機械翻訳》内部トランザクションID型xidは32ビット幅で、ラップアラウンドごとに4,000,000,000トランザクション増加します。 32ビットエポックは各ラップアラウンド中にインクリメントされます。 また、このエポックを含み、インストールのライフタイム中にラップアラウンドしない64ビット型xid8もあります。 関数表 9.80xid8値を返します。 XIDはPostgreSQLMVCC同時実行性メカニズムとストリーミングレプリケーションの基礎として使用されます。

《機械翻訳》(仮想)xidを持つトップレベルのトランザクションがコミットすると、pg_xactディレクトリにコミット済みとしてマークされます。 track_commit_timestampが有効な場合、追加情報はpg_commit_tsディレクトリに記録されます。

《機械翻訳》vxidxidに加えて、準備されたトランザクションにはグローバルトランザクション識別子(GID)も割り当てられます。 GIDは最大200バイトの文字列リテラルで、現在準備されている他のトランザクションと一意でなければなりません。 GIDからxidへのマッピングはpg_prepared_xactsに示されています。