「楽観的同時実行制御」と呼ばれることもある「楽観的ロック」には、実際にはロックがないことを学びました。典型的な実装は CAS (Compare-And-Swap) です。ロックがなくても、なぜこれがまだ「楽観的ロック」と呼ばれているのでしょうか。この用語がデータベースの世界に由来するという歴史的な理由はありますか?
1 に答える
あなたが正しく指摘したように、トランザクションは、更新しようとする行/永続オブジェクトのロックを取得しません。ただし、楽観的ロックはバージョン管理の原則に基づいて機能することもお気づきかもしれません。意味... データベース テーブル レコードのバージョン列 (設定した場合) は、トランザクションによって更新されるたびにインクリメントされます。また、特定のレコードを更新しようとするトランザクションは、取得時のレコードのバージョン番号と更新時のレコードのバージョン番号を比較する必要があります。バージョン番号と呼ばれるキー(Lock-Keyのように)を持ち、それが一致するかどうかを確認しようとするのと似ています..データベースにあるものと一致する場合(その間、レコードは別のtxによって更新されないことを意味します)、その後更新を実行します。一致が失敗した場合 (別の tx によってレコードが更新され、キーが機能しなくなります)。
したがって、バージョニング/Opt ロックは、事実上存在しないロックのキー (バージョンと呼ばれる) を持っているかのように見えます。また、ロックの本当の意味は、レコードの現在のバージョンが一致せず、レコードの更新を防止する (ロックされていることを意味する) 状況で理解できます。