2
トランザクションが複数のオブジェクトにまたがらない場合、オブジェクトごとのオプティミスティック同時実行性は直列化可能性を意味しますか?
以下を提供するシステムを考えます: オブジェクトごとのオプティミスティックな同時実行制御/バージョン管理(CAS-Check-and-Setを使用) 単一のオブジェクト以上に及ぶ必要のないトランザクション。 スナップショット分離 このシステムはシリアライズ可能と見なされますか? スナップショット分離から 書き込みスキューの異常では、2つのトランザクション(T1およびT2)が重複するデータセット(値V1およびV2など)を同時に読み取り、互いに素な更新(T1更新V1、T2更新V2など)を同時に行い、最後に同時にコミットします。他方によって実行された更新。システムが直列化可能である場合、T1またはT2のいずれかが「最初に」発生し、もう一方に見える必要があるため、このような異常は不可能です。対照的に、スナップショット分離では、書き込みスキューの異常が許可されます。 具体的な例として、V1とV2が一人のPhilによって保持されている2つの天びんであることを想像してください。銀行は、V1またはV2のいずれかが赤字になることを許可します。ただし、両方の合計がマイナスになることはありません(つまり、V1 + V2≥0)。両方の残高は現在100ドルです。Philは2つのトランザクションを同時に開始します。T1はV1から200ドルを引き出し、T2はV2から200ドルを引き出します。 これに基づいて、書き込みスキューの可能性があることが、スナップショット分離がシリアル化可能でないことを保証するシステムの唯一の理由であると思われます。 ただし、トランザクションが複数のオブジェクトにまたがることを許可しないシステム(上記の例V1およびV2)では、書き込みスキューが発生することは不可能と思われます。 したがって、上記のシステムはシリアライズ可能です。これは正しいです?