データベーススペシャリスト令和7年秋期 午前Ⅱ 問17

問17

DBMSにおいて,トランザクション間でデッドロックが発生していることを検出するために使用するものはどれか。
  • 2相ロック
  • 時刻印アルゴリズム
  • チェックポイント
  • 待ちグラフ

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

待ちグラフは、現在実行中のトランザクションをノードとし、他のトランザクションのロック解除を待つ関係を矢印で示したグラフです。このグラフを使うことで、デッドロックの発生を検出することができます。
17.png/image-size:250×129
X→Yは、トランザクションXがトランザクションYがロックしている資源のアンロックを待っていることを表し、待ちグラフ内に閉路(出発点に戻るループした経路)があればデッドロックが発生していると判断できます。このときDBMSはいずれかのトランザクションを強制的にアボート(中止)させることでデッドロックを解消します。

したがって「エ」が正解です。
  • 2相ロックは、ロックを取得する段階(成長相)と解除する段階(縮退相)の2つのフェーズを明確に区別したロック方式です。トランザクションで読書きが必要となるたびに都度ロックをかけていき、全てのロックを取得した後にまとめて解除する、というルールでロックの取得と解除を行います。
  • 時刻印アルゴリズムは、トランザクションごとに付与された開始時刻の情報(時刻印)をもとにデッドロックの発生を防止する仕組みです。資源へのロックが競合するとトランザクションの時刻印を比較して、一方を強制的に中止するなどしてデッドロックを未然に防ぎます。
  • チェックポイントは、ある時点のメモリバッファ内の更新情報を、実行中のトランザクションの分も含めて、強制的にデータベースに書き出す処理です。定期的に行うことで効率のよい障害時回復を可能にします。
  • 正しい。待ちグラフは、実行中のトランザクションを各ノード、データのアンロック待ちの様子を矢印(有向辺)で表現したグラフで、デッドロックの検出に使用されます。
© 2016- データベーススペシャリストドットコム All Rights Reserved.

Pagetop