LoginSignup
11
12

More than 5 years have passed since last update.

データベースの排他制御レベルについて

Posted at

排他制御は2種類ある

  • 扱うデータによって2種類の排他制御を使い分ける
  • UPDATE, DELETE の実行時は自動で行ロックがかかる
  • UPDATE用のデータを取得するSELECTを実行するときにロックするかどうかの話

データの同時更新を防ぐための排他制御
http://codezine.jp/article/detail/6764

A. 悲観的排他制御

  • SELECT時にも行ロックを行う(SELECT ~ FOR UPDATE)、ロックしたユーザーしか更新できない。
  • 利点:同時実行でも更新の衝突は起きない
  • 欠点:パフォーマンスが落ちる。デッドロック(※)の懸念も増える

※2本以上のトランザクションが同タイミングで実行されたとき、
互いのロックにより処理が進まなくなってしまう状態

B. 楽観的排他制御

  • SELECT時にはロックをしないので、複数のユーザーが同時に更新できる。
  • 利点:SELECT時にロックしない分パフォーマンスが向上する。
  • 欠点:同時更新で衝突が起こる可能性
11
12
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
11
12