令和7年度 秋期 データベーススペシャリスト試験 午前II 問17
DBMSにおいて,トランザクション間でデッドロックが発生していることを検出するために使用するものはどれか。
解答・解説
正解: エ. 待ちグラフ
DBMSにおけるデッドロックとは、複数のトランザクションが互いに相手が保持しているリソースのロック解除を待ち合い、処理が停止してしまう状態を指します。
このデッドロックが発生しているかを検出するために、DBMSでは待ちグラフ(Wait-for Graph)を使用します。待ちグラフは、トランザクションをノード(頂点)とし、トランザクション間のロックの待ち状態をエッジ(矢印)として表現したグラフです。このグラフ内に閉路(サイクル)が存在する場合、デッドロックが発生していると判定できます。
したがって、正解は「エ」です。
各選択肢の解説
- ア 2相ロック: トランザクションの直列可能性を保証するためのロック方式です。ロックを獲得するフェーズと解放するフェーズを分けることでデータの整合性を保ちますが、デッドロックの検出には使用されません。
- イ 時刻印アルゴリズム: トランザクションの開始時刻(タイムスタンプ)を用いて実行順序を制御し、直列可能性を保証する手法です。そもそもロックを使用しないためデッドロックは発生しません。
- ウ チェックポイント: 障害発生時の回復処理(リカバリ)を効率化するため、メモリ上の更新内容を定期的にディスクに書き出し、ログに記録するタイミングのことです。デッドロック検出とは無関係です。
- エ 待ちグラフ: 正解です。トランザクション間の待ち状態をグラフ化し、閉路の有無を調べることでデッドロックを検出します。