デッドロック予防
Deadlock Prevention
でっどろっくよぼう
デッドロックの発生を事前に防止する手法。全リソースの事前取得(一括ロック)、リソースの取得順序の統一、タイムスタンプに基づく待ち方式(Wait-Die、Wound-Wait)などがある。
Related
他の資格での定義
Related
関連キーワードの用語
各トランザクションが、ロックを獲得するだけのロック拡張相と、解放するだけのロック縮小相の2つに分けてロックを扱う規約。一度ロックを解放したら、新たなロックは獲得しない。すべてのトランザクションが従えば直列化可能性が保証されるがデッドロックは防げず、ロックをコミットまで保持する厳格な2相ロッキングにすると、未確定のデータを読んだことによる連鎖的なロールバックも防げる。
トランザクションの開始時刻印(タイムスタンプ)を使ってデッドロックを予防する方式。ロックを要求したトランザクションが、ロックを持つトランザクションより古ければ待ち(Wait)、新しければ自らロールバックして(Die)、元の時刻印のまま後で再実行する。古いものだけが新しいものを待つので待ちの閉路ができず、再実行を繰り返してもいずれ最も古いトランザクションになって処理が進む。
トランザクションの開始時刻印(タイムスタンプ)を使ってデッドロックを予防する方式。ロックを要求したトランザクションが、ロックを持つトランザクションより古ければ相手をロールバックさせてロックを得て(Wound)、新しければ待つ(Wait)。Wait-Die方式とは逆に新しいものだけが古いものを待つので待ちの閉路ができず、古いトランザクションは待たされない。
データの更新時に使用するロック。ロック中は他のトランザクションからの読取りも書込みも禁止される。書込みロックとも呼ばれ、データの一貫性を確保する。
データの読取り時に使用するロック。ロック中は他のトランザクションからの読取りは許可されるが、書込みは禁止される。読取りロックとも呼ばれる。
ロックを掛ける対象となるデータの単位。データベース全体、表、ページ、行などがある。粒度を細かくするほど同時に実行できるトランザクションは増えるが、管理するロックの数が増えて負荷が大きくなる。粗くすると管理は楽になるが、待ちが増えて同時実行性が下がる。
