簡略化された従来のデータベーストランザクションは、次のように見なすことができます。
- Mアイテムの読み取り
- それらの読み取りに基づいていくつかの計算を実行する
- これらの計算に基づいてN個の結果を書き込みます。これには、最初に読み取られた要素が含まれる場合があります。
これらのトランザクションを(同時に)実行する場合、ACIDプロパティを維持する必要があります。
まったく同じ要件(トランザクションでのM読み取りに基づくN更新)が、他の非DBMSコンカレントシステムにも存在します。
私はこれらのトランザクションを実行/解決するためにどのようなアルゴリズムが存在し、これらのアルゴリズムの相対的な長所と短所は何かを見つけることに興味があります。いくつかの読書をお勧めできますか?これは、書籍またはオンラインの参照/チュートリアルである可能性があります。
明確化:
したがって、たとえば、単純なアルゴリズムは、各トランザクションが単一のグローバルロックを取得することであり、事実上、単一のスレッド化を強制し、同時実行性を削除します。やや複雑なアルゴリズムは、個々のアイテムの読み取り/書き込みロックであり、デッドロックを回避するための順序があります)。などなど。この問題を解決するためのさまざまなアルゴリズムを文書化した優れた情報源はありますか。その長所と短所を備えた単一のアルゴリズムのみを指し示した答えでさえ有用です。