• ベストアンサー

楽観ロックって何?

DB初心者です。 楽観ロック、悲観ロックという言葉の意味を知りたいのですが、Webでうまく検索できません。 どなたかご教示願います。 またお薦めのサイトがありましたらご紹介ください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#18558
noname#18558
回答No.1

悲観ロックとは初めてききました。 一般的な言葉なんでしょうか? 楽観ロックとは、テーブルにもたせている更新タイムスタンプや、更新フラグを比較してロックするというものです。 例えば更新したいレコードを取得して、更新タイムスタンプを保持しておきます。 そして、更新する直前に再度レコードを取得して更新タイムスタンプが最初の時と変わっていないかどうかで、排他処理を行うというものです。 悲観ロックとは、おそらくDBの排他ロックのことでしょう。 排他ロックには、共有ロック、占有ロックがあります。 更新時には、占有ロックを使います。 更新するレコードに占有ロックをかけ、他のユーザーが更新しようとするのを物理的に制御します。 悲観ロックを使う場合は、デッドロックが発生する恐れがあるので使う場合には注意が必要です。 それぞれのメリット/デメリットですが 楽観ロックのメリット ・デッドロックを気にする必要がない 楽観ロックのデメリット ・テーブルにタイムスタンプをもつ必要がある。 ・プログラムで制御する必要がある 悲観ロックのメリット ・プログラムで気にする必要がない 悲観ロックのデメリット ・デッドロックが発生する恐れがある ・ロックの間トランザクションを維持しておかないといけない などでしょうか。

参考URL:
http://monjyu.biz/monjyu/bd2/oracle1/msg/105.html
catecholamine
質問者

お礼

さっそくの回答ありがとうございます。 とても分かりやすく説明してくださり助かりました。 参考URLで勉強してみます。

その他の回答 (1)

回答No.2

楽観ロック、悲観ロックでなく、楽観的ロック、悲観的ロックでさがすと 割と見つかると思いますよ。 楽観的ロック=確実性に欠けるが事実上は問題が出ないで”あろう”というレベルのロック制御 悲観的ロック=如何なる状況下においても確実に行われるロック制御 楽観的ロック制御の方法は、さまざまなので説明を割愛します。 #1で書かれているような更新時刻を使う手法以外にも、たくさんの方法がありえます。

参考URL:
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9904/lock/
catecholamine
質問者

お礼

お答えありがとうございます。 本当ですね。楽観的ロックでググるとたくさん出てきました。 めぼしいところを調べてみたいと思います。

関連するQ&A