REF:https://blog.csdn.net/whyangwanfu/article/details/1926675
Serializableを
トランザクションセットはシリアル順序で実行されたような予定の取引の結果と同等で同時に生成された結果が行われます。
並行性制御メカニズム(によってシリアライズツーフェーズロック・プロトコル保証します)。
競合直列可能で
のみ(X)を読み取ると書き込み(X)の動作を検討してください。
スケジュールS交換の場合は(2つの連続する命令のやり取りが競合しない)競合しない命令競合直列化可能な一連のシリアルスケジューリング競合、スケジューラSに相当しています。Serializableを表示
緩い、シリアライズ競合より。
回収可能性
- 回復可能スケジュール
各トランザクションのチタンTiはチタンTjのに提出する読み取りと書き込みのデータTjを、Tjを、 - いいえカスケードスケジュール
トランザクションごとにTiとTjを、TjのTiはTjの初に書き込まれたデータはTiを読まない読書提出する前に、
トランザクションのロールバックのシリーズに起因するトランザクション障害のリードにカスケードスケジュールを
アイソレーションの実現
唯一の生産競合するか、スケジューリングカスケードずに、シリアライズ、シリアライズを見ます
直列化が決定しました
- 競合検出シリアライズ
図で設定トランザクション頂点、。、ジャッジメントリング
- TIは、(X)を読み取る Tjをフォームに書き込み(X)の前
- TI、書き込み(X) Tjが形成する(X)を読み取る前
- TI、書き込み(X) Tjをフォームに書き込み(X)の前に
> Tjの-上記構造のいずれかを満たす片側、Tiでの
- 直列化ビューが検出
NP-完全に
同時実行制御
ロック・グラント
- 共有はS、読み取りロックをロックします
- 排他ロックXは、書き込みがロック
排他ロックトランザクション飢餓適用を回避する方法:Q
Aを:ソート順序の認証アプリケーションロックロックを
二相ロック・プロトコル
- 新しいロックを取得できないロックを解除するトランザクションの後
、その競合直列可能性を確保するためには、デッドロックが発生しないという保証はありません、トランザクションはロールバックされてもカスケード接続することができます - 別の厳格な二相ロックプロトコル(回避カスケードロールバック)、強力な2フェーズロック・プロトコル(契約に基づいて、取引注文がシリアライズを提出することができます)、データベースのほとんどのこれら二つの協定のいずれかを使用して
ロック・マネージャ
ブラックボックスのためにロックを付与されたIデータ項目、取引のためのT、
マルチ粒度ロック
いくつかの場合には、複数のデータ項目は、同期ユニットとして、1つのグループにクラスタ化されました。全体のデータベースへのアクセスのような、各データが同期動作を実行するためには非常に時間がかかります。
意図的ロック
データベースには、ツリーとして組織しました。
Sトランザクションを加え、その祖先ノードへのデータのロック、プラスされたロックは、ISはサブノードがSロック有する表す
プラスXロックへのトランザクションデータを、その祖先ノードに加えによってIX
同じトランザクションは、ノードSに同時に添加してもよいですIXロックとそのロックSIXロック
インデックス構造の同時実行
取引のために、インデックスの表情二回、およびインデックス構造中に変更されていることがわかった、長いインデックス検索がタプルの正しいセットを返すようなように、完全に受け入れています。
B +ツリー:カニプロトコル
- 検索:Sロックがルートノードでロックされ、ツリーの下に沿って検索、ロック、子ノードSを得た後、親ノードのロックを解除するために、S。
- 挿入および削除:リーフノードを見つけるための検索では、Xロック挿入欠失を有するリーフノードをロックします。
- スプリットとマージ:兄弟ノードとのスプリットまたはマージする必要があり、ロックにXロックを持つ親ノード。