楽観ロックと悲観ロックとは?らっかんろっくとひかんろっく
楽観ロックと悲観ロックとは、同時更新への構えが逆の2方式。悲観ロックは読み出した時点で他者を待たせ、競合そのものを起こさせない。楽観ロックは待たせず、更新時にバージョン番号や更新日時が読んだときと一致するかを確かめ、ずれていれば失敗させてやり直させる。競合の頻度と待ちの許容度で選ぶ。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
複数の利用者が同じ行を同時に書き換えると、後から書いた値が先の値を黙って上書きし、どちらの更新も申告どおりには残らない。防ぐ素直な方法は行を占有させることだが、画面を開いたまま席を立つような長い操作でそれをやると、他の利用者が延々待たされ業務が止まる。占有せず事後に検出する方式が要る、という発想が楽観ロックである。
具体例
Redmineのチケット編集は更新日時の照合で競合を検出し、他者の更新があれば保存を止めて知らせる楽観ロックの例。一方、座席や在庫の引当のように短時間で同じ行へ集中する処理は、OracleのSELECT ... FOR UPDATEで行を確保する悲観ロックが向く。
試験での引っ掛け
楽観ロックは「ロックしないから競合が起きない」ではなく、競合を検出して業務側で救う方式である。失敗時の再取得と利用者への通知を設計しなければ更新消失は残る。逆に悲観ロックは待ちを生み、長時間の占有はデッドロックの温床になる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。