質問
楽観ロックと悲観ロックの違い
guest | 2018-01-11 05:05:33 | 閲覧数: 1157

楽観ロックと悲観ロックの違いが今一わかりません。

IT初心者でも分かりやすいように説明して頂けないでしょうか。

回答一覧
No. 1 guest | 2018-01-11 05:15:07

どちらも排他制御で使われる用語だと思います。

排他制御 = 複数ユーザーが同じデータを更新する際、同時に変更できないように更新対象データをロックすること

 

それでは本題に。

楽観ロック

楽観ロックとは以下の様な仕組みです。

1.Aさんがデータの更新を始める

2.Bさんがデータの更新を始める

3.Aさんがデータ更新を完了する

4.Bさんがデータ更新を完了する

5.Bさんの更新は反映させず、「他の人がデータを更新したので、更新されたデータを確認してもう一度更新してください」という警告を出す。

 

悲観ロック

悲観ロックとは以下の様な仕組みです。

1.Aさんがデータの更新を始める。

2.Bさんがデータの更新を始める。

3.Bさんに「他の人がデータを更新しているので終わるまで待ってください」という警告を出す。

 

まとめ

名前からして、楽観ロックはあまりデータ更新する人いないから楽観的に考えてもし衝突したら取り消してもらおう、という楽観的なロックです。

悲観ロックは初めからガチガチにどうせ更新してるなら衝突するので一切更新はさせない、という悲観的なロックです。

一見、悲観ロックの方が衝突が防げていいように見えますが、悲観ロックだと1人のユーザーが一つのデータをずっとロックしてしまう危険性があります。

それぞれ一長一短なのでデータの特性によってロックの仕方を使い分けましょう。