同時実行制御(ロック)




目次

ロック


更新矛盾が発生しないようにするために、ロック制御を行います。

ロックの種類


ロック制御には、下記2種類が存在します。

  • 専有ロック
  • 共有ロック

ロック対象の大きさ(ロックの粒度)


ロックを行う範囲(行、表)をロックの粒度と言います。

同時実行制御


複数トランザクションを制御する方式

  • ロック方式

    ロック待ちフラグ(WFG)を作りデットロックを検出し、ロック状態を監視します。

  • 時刻刻印方式

    早く開始したトランザクションにアクセス競合時に優先権を与得ます。つまり早い者勝ちの制御になります。ロックは行わないので、デットロックは発生しません。

  • 楽観的方式

    更新対象データを事前に読み込んでおき、更新直前に他のトランザクションによって同じデータを更新していないか読み込んでいたデータと比較します。

直列可能性


トランザクションの処理順番が異なっても、結果が同じになる状況を直列可能性と言います。

T1 → T2 =T2 → T1

デットロックの検出


  • 待ちフラグ

    互いの資源にロック要請を出すトランザクション間でグラフに閉路が生じると検出できるフラグ管理を行うことで、デットロックを検出します。

  • タイムアウト

    ロックが解除されるまでの時間で、デットロックを検出します。