「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

「楽観的ロック」と「悲観的ロック」の違い

スポンサーリンク

予備知識


用語意味
排他制御ダブルブッキングしないようにすること
ロック今回は「これは今、俺が使っているからさ。他の人は触らないでね」の意味。排他制御を実現する手段のひとつ

それぞれの用語の意味


用語意味
楽観的ロック「ダブルブッキングしたらドンマイ!」な考えで作られているロック
悲観的ロック「ダブルブッキングはダメ。ゼッタイ。」な考えで作られているロック

似ているところ


どちらもロックの分類を指す用語です。
楽観的ロックの反対が悲観的ロックです。


「楽観的ロック」と「悲観的ロック」の違い1

違うところ


ダブルブッキングに対して、どれくらい本格的に備えるかが違います。

楽観的ロックは「ダブルブッキングする可能性は低いし、もしダブルブッキングしてもそこまでヤバいことにはならないよね」な考え方に沿って作られているロックです。
もしダブルブッキングしたら諦めます。


「楽観的ロック」と「悲観的ロック」の違い2

悲観的ロックは「ダブルブッキングする可能性は低くないし、もしダブルブッキングしたらヤバいよね」な考え方に沿って作られているロックです。
ダブルブッキングしないようにします。


「楽観的ロック」と「悲観的ロック」の違い3

備考


私の理解では、楽観的ロックや悲観的ロックは

設計思想

です。
必ずしも具体的なやり方を指す用語ではないと解釈しています。

例えば、SQLにおいて、select文の最後に「FOR UPDATE」を付けると悲観的ロックになります。

ただし

1.データを取得(select文を実行)
2.あれやこれやの処理
3.「1」の状態からデータが変わってないか確認するためにデータ取得(「FOR UPDATE」付きのselect文を実行=悲観的ロック)
4.データ更新update文を実行)


のような処理をやったら、全体としては楽観的ロックです。
「多分1の処理から3の処理までの間にダブルブッキングしないでしょ!もしダブルブッキングしたらドンマイ!」と楽観的になっていますよね。

そのため、機械的に「このSQL文に『FOR UPDATE』が付いているから、この処理は悲観的ロックだな」とか考えていると、思わぬミスをする可能性があります。
ご注意ください。


スポンサーリンク
書籍画像003
書籍画像040


書籍画像
わわわ説明術コラム
宣伝だよ
つくって、壊して、直して学ぶ Kubernetes入門
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
おい点P、動くんじゃねえ!──ニガテ民のための算数と数学の本