応用情報技術者試験 平成30年秋 午前問30 解説付き過去問
問題
データベースシステムにおいて、二つのプログラムが同一データへのアクセス要求を行うとき、後続プログラムのアクセス要求に対する並行実行の可否の組合せのうち、適切なものはどれか。
ここで、表中の○は二つのプログラムが並行して実行されることを表し、×は先行プログラムの実行終了まで後続プログラムは待たされることを表す。
正解
解説
この問題は、データベースにおけるトランザクション同士が同一データにアクセスする際に、どのようなロックの組合せで並行実行が可能かを問うものです。ロックの基本的な仕組みとその組合せによる実行可否の理解が必要です。
- ロックの種類と特徴
データベース管理システムでは、複数のトランザクションによる同一データへのアクセスが競合した際に、データの一貫性と正当性を保つためにロック機構が使われます。主に次の2種類のロックがあります。- 共有ロック(Sロック)… 読取専用のロック。複数のトランザクションが同じデータに共有ロックをかけることができます。
- 排他ロック(Xロック)… 更新を行うためのロック。他のどのロックとも同時に存在できません。共有ロックとも排他ロックとも競合します。
- ロック競合の整理
以下のようなルールに基づいて、後続プログラムの実行可否が決まります。
先行プログラムの
ロック後続プログラムが
取得するロック並行実行
可否共有ロック 共有ロック ○
(可)共有ロック 排他ロック ×
(不)排他ロック 共有ロック ×
(不)排他ロック 排他ロック ×
(不)
この表の通り、共有ロック同士であれば並行実行は可能ですが、それ以外のロックの組合せでは、先に取得したロックが解除されるまで後続のアクセスは待機状態となります。