排他制御とロックを理解する

DBMSは複数トランザクションが同時にデータへアクセスしても整合性を保つためロックや分離制御を使う。共有ロック、排他ロック、ロック粒度、デッドロックを整理する。

この単元で学ぶこと

  • 共有ロックの意味と役割を説明できる
  • 排他ロックの意味と役割を説明できる
  • ロック粒度の意味と役割を説明できる
  • 共有/排他ロックと粒度・デッドロックを区別できる

本文解説

共有ロックは読取り同士の共存を許しやすく、排他ロックは更新対象への他アクセスを制限する。ロック範囲が広いと管理は単純だが並行性が下がる。

共有ロック 主に読取りで使い、他の共有ロックと共存できるロック。 更新ロックとは競合する。

排他ロック 更新対象を他トランザクションから保護するロック。 他の共有・排他ロックを制限する。

ロック粒度 表・ページ・行などロック対象範囲の大きさ。 細かいほど並行性は高まりやすいが管理負荷も増える。

ロック待ち 必要なロックが他トランザクションに保持され、取得まで待つ状態。 待つだけならデッドロックとは限らない。

DBデッドロック 複数トランザクションが互いのロック解放を循環待ちする状態。 DBMSが一方を中断して解消することがある。

読取りか更新か、ロック対象範囲、待ち関係が循環しているかを確認する。

二つの読取りは共有ロックで共存できても、同じ行の更新には排他ロックが必要になり待ちが発生する。

図解

DBロックの競合
共有ロック同士、共有と排他、排他同士の共存可否と待ち関係を整理する。

重要ポイント

  • 共有ロック: 主に読取りで使い、他の共有ロックと共存できるロック。
  • 排他ロック: 更新対象を他トランザクションから保護するロック。
  • ロック粒度: 表・ページ・行などロック対象範囲の大きさ。
  • ロック待ち: 必要なロックが他トランザクションに保持され、取得まで待つ状態。
  • 単なるロック待ちとデッドロックを区別する。

間違えやすい点

  • 共有ロックなら更新も自由と考えない。
  • 行ロックならデッドロックが絶対起きないと考えない。
  • ロック範囲を広げれば性能が必ず上がると考えない。

用語解説

共有ロック
主に読取りで使い、他の共有ロックと共存できるロック。
排他ロック
更新対象を他トランザクションから保護するロック。
ロック粒度
表・ページ・行などロック対象範囲の大きさ。
ロック待ち
必要なロックが他トランザクションに保持され、取得まで待つ状態。
DBデッドロック
複数トランザクションが互いのロック解放を循環待ちする状態。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。