10月15日の学び

排他制御(ロック)に関しての整理

楽観的ロック

  • データの同時更新が発生する頻度は低いことを想定。
  • データそのものに対してロックは行わずに、更新対象のデータが参照時と同じ状態であることを確認してから更新する。
  • データそのものは第三者からもアクセス可能。
  • ロックの代わりにデータ参照時とデータ更新時の状態を確認。

悲観的ロック

  • データの同時更新が発生する頻度は高いことを想定。
  • データ参照時に更新対象となるレコードのロックを取得。ロックされたレコードは、トランザクションが、コミットまたはロールバックされるまで、他のトランザクションから更新されない。
  • ロックの開放もれが発生するとデータ更新ができなくなる。
  • 排他制御の時間が長いほどシステムの利便性が低下する。

qiita.com