Nested transaction とは

ネストされたトランザクションは、すでに開始されたトランザクションのスコープ内の命令によって開始されるデータベーストランザクションです。
ネストされたトランザクションは、異なるデータベースでは異なる方法で実装されます。ただし、最も外側のトランザクションがコミットするまで、関連のないトランザクションには変更が表示されないという共通点があります。つまり、内部トランザクションでのコミットは必ずしもデータベースへの更新を持続するとは限りません。
一部のデータベースでは、ネストされたトランザクションによって行われた変更は、ネストされたトランザクションがコミットされるまで 'ホスト'トランザクションによって認識されません。いくつかによると、これはトランザクションの分離特性に従います。
真のコンポーネントベースのアプリケーションアーキテクチャでは、ネストされたトランザクションを適切に処理する機能が必要です。コンポーネントベースのカプセル化アーキテクチャでは、ネストされたトランザクションは、プログラマがそれを知ることなく発生する可能性があります。コンポーネント関数にデータベーストランザクションが含まれていてもいなくてもかまいません(これはコンポーネントのカプセル化された秘密です)。このようなコンポーネント関数の呼び出しがBEGIN-COMMITブラケット内で行われると、ネストされたトランザクションが発生します。 MySQLのようなポピュラーなデータベースではBEGIN-COMMIT括弧をネストすることができないので、これを処理するにはフレームワークまたはトランザクションモニタが必要です。ネストされたトランザクションについて言及するとき、この機能はDBMSに依存しており、すべてのデータベースで使用できるわけではないことを明確にする必要があります。
ネストされたトランザクションの理論は、フラットなトランザクションの理論に似ています。
銀行業界は通常、オープンネストされたトランザクションを使用して金融取引を処理します。これは、ネストされたトランザクションモデルのより緩やかな変形であり、不整合の付随的なトレードオフを受け入れながらパフォーマンスが向上します。