Database Lock

Lock とは

Lock とは、トランザクション間の順序性を保証するための方法である。
ここでトランザクションとは、独立して処理できる最小単位を意味する。
Lock は DBMS ごとに実装方式や方法が異なるため、DBMS ごとの Lock の概念を理解しておく必要がある。

DB ロックとは

DB ロックは、複数のトランザクションが 1 つのデータに同時にアクセスしようとするとき、それを制御するものである。

DB ロックの種類

Lock の種類には共有ロック(Shared Lock)、排他ロック(Exclusive Lock)があり、それぞれ Read Lock、Write Lock とも呼ばれる。

  • 共有ロック(LS, Shared Lock)
    • トランザクションが読み取りを行うときに使用するロックであり、データを読むことはできるが書き込むことはできない。
  • 排他ロック(LX, Exclusive Lock)
    • トランザクションが読み書きを行うときに使用するロックであり、データを読み書きできる。

排他制御

楽観的ロック

複数の人がほぼ同時にリソースを変更することは少ない、という楽観的な観点から行う排他制御である。

悲観的ロック

複数の人が同じリソースを頻繁に変更するという前提の、悲観的な観点から行う排他制御である。