50
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

楽観的ロックと悲観的ロック

Last updated at Posted at 2015-09-24

楽観的ロック

Railsだと、lock_versionのやつ。

ブラウザでの見え方

ブラウザでの見え方(まあ実装次第だけど、だいたいこんな感じで実装する)

AさんがHoge更新画面を開く。
BさんもHoge更新画面をAさんが開いている間に開く。

AさんがHogeを更新。
Bさんが少し遅れてHogeを更新。
Bさんに誰かが更新してしまっていることを伝えるメッセージを出す。

このように、更新のタイミングで、おやおや!とわかるのが
楽観的ロック。

参考

悲観的ロック

いわゆるSELECT FOR UPDATEのやつ。
トランザクションで実現。
誰もSELECT FOR UPDATEされたやつが解放されるまで何もできなくなる。

参考

http://ruby-rails.hatenadiary.com/entry/20141210/1418207618
http://atamoco.boy.jp/kogoto/work/oracle-rakkan-lock.php

楽観的ロックと悲観的ロックの使いどころ

ブラウザが絡むと、まずブラウザにデータを表示、そのあとで編集ボタンを押すでUPDATEとなるため、「データ表示」と「編集ボタン押す」の間で、トランザクションを維持するのが、難しい。よって概ね楽観的ロックが使われる。

参考

50
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?