データベースのSロックとXロック、2つのロックプロトコル


          :   (X )    (S ).  X ,   T   A  X  ,     T       A,...  S ,   T   A  S  ,          A S ,    X ,  T  A  S 。
   T     A  S , T    A    ,       (S        ), T  A  S   ,        A S ,    X ,      A,     A.

2つのロックプロトコル:
データベースの2つのロック・プロトコルは、すべてのトランザクションが2つのフェーズに分けてデータ・アイテムをロックおよびロック解除する必要があることを意味します.
1.拡張フェーズ
任意のデータ・アイテムの読み取り、書き込みの前に、データ・アイテムのブラックアウトを申請して取得します.
2.収縮段階
各トランザクションでは、すべてのブラックアウトリクエストがロック解除リクエストよりも先に必要です.
たとえば、トランザクションTは、次のような2つのロックプロトコルに従う.
BEGIN TRANSACTION;
LOCK(A);READ A; A := A + 100; WRITE A; LOCK(B); UNLOCK(A); READ(B), UNLOCK(B),;
COMMIT;     
同時に実行されるすべてのトランザクションが2つのロック・プロトコルに準拠している場合、これらのパラレル・トランザクションに対するパラレル・スケジューリング・ポリシーはシリアル化可能であることを証明できます.
同時に実行されるすべてのトランザクションが、2つのロック・プロトコルを遵守している場合、これらのトランザクションのパラレル・スケジューリング・ポリシーがシリアル化できる十分な条件であり、必要ではありません.
2つのロックプロトコルとデッドロックを防止する1回のロック法の違い:
1回のブラックアウトでは、トランザクションが使用するすべてのデータ・アイテムを一度にロックする必要があります.そうしないと、実行を続行できません.
1回のブラックアウトは2つのロック・プロトコルに合致することは明らかですが、2つのロック・プロトコルでは、必要なすべてのデータ・アイテムを一度にロックする必要はありません.したがって、2つのロック・プロトコルを遵守するトランザクションはデッドロックになる可能性があります.