ロストアップデート【lost update】
ロストアップデートとは?

例えば、利用者Aと利用者Bがほぼ同時に同じデータを読み込み、それぞれが手元で値を変更して保存しようとしたとする。Aが先に保存を完了した直後、Bが自分の変更内容を書き込むと、Bは元の値を基に編集しているため、Aの更新はBの内容に完全に上書きされる。システム上にAが作業した痕跡は残らず、変更そのものが消えた状態になる。
厄介なのは、この問題がエラーとして表面化しない点にある。処理は正常に完了したように見え、データだけが静かにずれていく。在庫管理や銀行口座の残高、座席予約など、数値の正確さが直接求められる場面では、データと実態の乖離が業務上の損失につながることもある。原因の特定も難しく、気づいたときには問題の発端をたどれなくなっている場合も多い。
対策は基本的に排他制御によって行う。「悲観的ロック」は、データを読み込んだ時点で他の処理が同じデータを変更できないよう鍵をかける方法である。一方、「楽観的ロック」は、保存の直前に読み込み時からデータが変わっていないかを確認し、変更があれば保存を拒否して再試行を促す方法である。同時アクセスの頻度やシステムの性質に応じて、いずれかが選ばれる。