本記事では基本情報技術者試験にも出題される共有ロックと専有ロックについて解説しています。
目次は以下の通りです。
ロックとは
ロックとは複数のトランザクションが同時にデータを操作する際に、
データ更新中のアクセスを制限することです。
ロックの主な目的は、一貫性を保ちながら、データ競合や不整合を防ぐことです。
ロックのかけ方は共有ロックと専有ロックの2種類あります。
共有ロックと専有ロックとは
共有ロックとはトランザクションがデータを参照する前にかけるロックです。なので、他のトランザクションは参照することは可能ですが、更新する作業などはできない状態になっています。一方で、専有ロックとはトランザクションがデータを更新する前にかけるロックです。なので、参照も更新もなにもできない状態になっています。
詳しくは下の表を見てみてください。

このように両方のトランザクションが共有ロック、すなわち参照可能の状態だと閲覧することができます。しかし、どちらかのトランザクションで専有ロックがかかると参照することもできないので、アクセスできない状態になります。
デッドロックとは
デッドロックは複数のトランザクションが互いにロックを保持し合い、相手のロックが解除されるまで待機し続ける状態を指します。つまり、お互いロックしていることによりお互い待ち状態になっているということです。
まとめ
本記事のポイントを以下にまとめます。
・共有ロックとはトランザクションがデータを参照する前にかけるロック
・専有ロックとはトランザクションがデータを更新する前にかけるロック
・デッドロックはお互い待ち状態
コメント