トランザクションと同時実行制御 - データベースシステムの概要

トランザクションのI.概要

1.1定義

トランザクションは、これらの操作がいっぱいいっぱいかどうかのいずれかの操作を行い、作業の不可分の単位ユーザ定義のデータベース操作のシーケンスされている
トランザクションが同時実行制御の基本単位である、データベースの回復が基本単位である、基本的な論理ユニットは、論理データベースです
データベースの回復メカニズムと同時実行制御機構は、データベース管理システムの重要な一部である
リレーショナルデータベースでは、トランザクションは、SQLステートメント、SQL文またはプログラム全体の集合とすることができます

--显式定义事务
begin transaction 
SQL 语句1 
……  ……
commit / rollback

/*
commit
    事务正常结束
    提交事务的所有操作(读+更新)
    事务中所有对数据库的更新写回到磁盘上的物理数据库中

rollback
    事务异常终止
    事务运行的过程中发生了故障,不能继续执行
    系统将事务中对数据库的所有已完成的操作全部撤销
    事务滚回到开始时的状态
*/
--将数学课程号由2修改为22
/*
解析:
所涉及的关系:Course和SC,根据参照完整性约束,应将两表中的2都改为22。要将修改两个表的两个SQL语句定义成一个事务。因为DBMS对这两个语句要么都执行,要不都不执行
*/

begin transaction
    update Course set CNO='22' where CNO='2'
    update SC set CNO='2' where CNO='22'
commit

1.2特長

不可分性

  • 論理作業単位は、トランザクションデータベースです
  • トランザクションのすべての操作は、いずれかのすべて正常に実行か実行されています
  • トランザクションが障害により中断された場合、会社によって生じる効果を排除しようとする必要がありますが、データベースはトランザクションの実行前の状態に復元されます

一貫性

  • データベーストランザクションの実行の結果は、別の一貫性のある状態にある一貫した状態から遷移しなければなりません

隔離

  • トランザクションの実行は、他のトランザクション干渉することはできません。複数のトランザクションの同時実行、それが正常に送信されるまで、何も更新し、彼らは他の事項には表示されません

持久性

  • トランザクションが完了したら、それはそれは、データベースが永続的に有効となります更新し、システムに障害が発生した場合でも、永続的でなければならないデータベースへの変更します

第二に、同時実行制御の概要

トランザクションの同時実行は、データベースシステムのシステム効率を向上させる効果的な方法であるが、トランザクションのACID特性を損傷する恐れがあり、データの矛盾をもたらします

2.1トランザクションの同時実行

1、同時実行の理由

  • スループットとリソース使用率の向上
  • 待機時間を削減

2、同時実装

  • クロス並行モード
  1. スタンドアローンシステム、ターンクロスランニングトランザクションにおける並列処理
  2. 利点:プロセッサのアイドル時間は、システムの効率を改善するために低減することができます
  3. 短所:ない本当の同時動作は、データの矛盾をもたらすことができます
  • 並行モード
  1. マルチプロセッサシステムでは、各プロセッサがトランザクションを実行することができ、複数のプロセッサを有する複数のトランザクションが同時にトランザクション真に並列動作の複数を達成することができます
  2. 長所:並行処理への最良のアプローチ
  3. 短所:ハードウェア環境への対象が、それはまた、データの不整合を発生させることができます

2.2同時実行の問題に起因

1、変更の損失
2、「ダーティ」データを読み取る
3、非反復リード
原因

  • データ読み出しトランザクションT1の後、T2は、そのトランザクションを変更し、トランザクションT1が再びデータを読み出し、前回とは異なるが見出されています
  • トランザクションT1は、トランザクションT1が再び読ま同じ条件で記録され、レコードがない、トランザクションT2は、これらのレコードの一部を削除し、一定の条件の下で記録された特定のデータを読み込みした後、いくつかのことがわかりました
  • トランザクションT1は、一定の条件の下で記録された特定のデータを読み込みした後、一部のレコードはT1のトランザクションレコードが同じ条件で再び読み込まれ、トランザクションT2を挿入され、それがさらにいくつかのレコードを見つけました。

miD6sI.png

例:航空会社の予約システムにおけるアクティビティのシーケンス
①チケット(トランザクションT1)は、航空券のAのバランスを読み出し16 = Aを設け、
②チケット酢酸(トランザクションT2)は同じ飛行チケットAにバランスを読み出し、 ;また、16である
、データベースに書き込まAので、15、チケットを販売③チケットは、バランスA←A-1を調整
チケットbはまた、チケットを販売④、A←A-バランスを変更します1、、バックデータベースへの書き込み15
の結果は、明らかに2枚のチケットを販売、チケットデータベースは1つだけのバランスを減らす
この条件は、データベースの矛盾と呼ばれ、同時動作によって引き起こされる
、同時動作の場合、下スケジューリング動作は、二つのトランザクションT2がランダムで、T1の配列します。スケジューリングは、上記の順序で実行した場合、トランザクションT1の変更は失われます。理由:トランザクションが変更および修正を書き戻すステップ4の後にトランザクションT1、T2を覆います

3つの矛盾を生成するトランザクションの隔離を破壊上述の同時動作のための主な理由です。同時実行制御は、他の取引からの干渉なしに同時動作のスケジューリング、トランザクションの実行を使用するための正しい方法である
主要な技術の同時実行制御:封鎖、タイムスタンプ、楽観的管理法、マルチバージョン同時実行制御

第三に、封鎖

ブロック前のデータオブジェクトの操作にそのトランザクションを、Xianxiangロックシステムは、トランザクションデータオブジェクトへの要求を送信したトランザクションがロックを解除する前に、ロックをある程度制御を持って、他のトランザクションは、データオブジェクトを更新することはできません

3.1ロックの基本的なタイプは、

排他ロックも書き込みロックまたはXロックとして知られているが、プラスXロックへのトランザクションデータオブジェクトT場合、のみTのリリースまで、他のトランザクションは、もはやAを読んでいないし、修正することができ、TはAを読み、変更することができますロックオン
共有ロック、また、Sロックとして知られている、またはロックを読み取り、トランザクションデータがプラスT Sロックオブジェクト場合、トランザクションTを読み取ることができるが、Aを変更することはできません、他の上のトランザクションだけを読んでいたし、修正することができませんT Aは、ロック・プロトコル2.2のロックを解放するまで

3.2ロック・プロトコル

ロッキング・プロトコル3.2.1

トランザクションTは、トランザクションが終了するまで解放されないデータオブジェクトRを変更する前に、そのXロックを増やす必要があり
、アクション:損失を防止するために修飾されたロッキング・プロトコル、およびトランザクションが回復可能性Tであることを確実にするために
説明:契約の遮断は、場合それが保証され、非反復可能読み取りが「汚い」データ読み取ることができないので、データは変更しないようにされて読まれ、ロックは、必要とされていません

3.2.2 2つのロッキング・プロトコル

トランザクションTのロック・プロトコルに基づいてデータオブジェクトRを読み取る前にSロックを追加する必要があり、Sロックを解除することができるが、読んだ後に
アクションを2つのロッキング・プロトコルの変更及び「ダーティ」読み取りの損失を防ぎますデータの
説明:2つのロックプロトコルでは、Sロックが読み取りデータの後にリリースされることができるので、それが反復可能読み取りを保証するものではありません。

3.2.3 3ロッキング・プロトコル

トランザクションTのロック・プロトコルに基づいてデータRを読み出す前にSロックを追加する必要があり、トランザクションが終了するまで解放されない
機能:ダーティデータと非反復を読み取るように修飾3つのロッキング・プロトコルの損失を防ぐ読み取る
3つ協定の主な違い

  • どのような行動は、(ロック時間のすなわち保有者)をブロックすると、ロックを解除するときに適用する必要があります
  • 一貫性の程度が高いほど、ロッキング・プロトコル・レベルより高いです

miDvYF.png

デッドロックやライブロック3.3

3.3.1ライブロック

また、飢餓として知られている、ロックを待っているトランザクションは、無期限に待機している状態になっている
ライブロックを避ける:より多くの要求が同じデータオブジェクトをブロックする際に最初に、これらの問題のため、要求キュー封鎖によると、最初のサーブ、データを来りますリリースされたらロックを取得するためにキューに、オブジェクト上の最初の取引の承認のための最初のアプリケーションをロック

3.3.2デッドロック

二つ以上のトランザクション間のサイクルがまたはの現象を待つ
デッドロック防止
1、一回フランス語封鎖
一度すべてが実際の運用の実際の実装で使用されるすべてのデータオブジェクトをロックする必要があり、各トランザクションの後には、それ以外の取引ではありません任意のデータブロックに任意の実際の行動だった
問題を

  • ロック時間データ成長、システムの並行性を低下させます
  • データオブジェクトがトランザクションをブロックすることは困難である事前に決定します

2、封鎖法の秩序
事前に定義されたデータは、そのための封鎖で封鎖のため、すべてのトランザクションオブジェクト
の問題を

  • 高い維持費、非常に多くのデータベースシステムは、そのようなリソースを維持するために、データオブジェクトをブロックして、データの挿入、欠失および他の操作とし、常に変化している封鎖のために非常に困難です

両方の方法は、デッドロックを防ぐのに有効であるが、いくつかの問題がありますが、実際に実装するのは容易ではありません。そのため、デッドロックを防止するための戦略はデータベースの特性に非常に適していない、DBMSは、一般的にデッドロックを診断する方法を使用して持ち上げます

3.3.3デッドロックの検出と解放

1は、デッドロック検出
データベースシステムは、典型的には、タイムアウトを採用したり待機している取引方法は、デッドロックの図見つかった
2、占有解放し
、デッドロックに選択する1つ以上のトランザクションを取り消すと、トランザクションが保持しているすべてのロックを解除します他のトランザクションが実行を継続できるように、このように、デッドロックを解除するための条件を待っているのサイクルを壊します

第四に、スケジューリング、シリアライズ同時

同時スケジューリングと4.1シリアルスケジュール

4.1.1シリアルスケジュール

シリアルスケジュールトランザクションのセットは、これらのトランザクションは、トランザクション(もしあれば)の各トランザクションが唯一の完全な終了後に開始される次々に実行することを意味する
トランザクションのセットに、シリアルスケジュールは常に正確である
nに対してをトランザクションは、n個あります!異なるシリアルスケジュールが異なる結果につながる可能性

4.1.2同時スケジューリング

物事の同時スケジューリングのセットは、これらの取引は、少なくとも2つのトランザクションがその実行を開始している必要があり、かつ上にないことを意味し
、同時スケジューリングのルールの正しさ:物事の同時スケジューリングのセット、正しい場合にのみ、スケジュール実行があれば同じシリアルスケジュールの1の結果の結果は、この時点での同時スケジューリングが直列化可能であることを特徴とします

4.2競合直列化可能

操作の競合:読んで別のトランザクションを参照し、操作を書いて、同じデータを書き込み操作

Ri(x)与Wj(x)         /*事务Ti读x,Tj写x,其中i≠j*/
Wi(x)与Wj(x)         /*事务Ti写x,Tj写x,其中i≠j*/

アクションを交換することができない含む同じトランザクションの二つの動作異なるトランザクションの矛盾する動作
と、2つのトランザクションの順序は、Scを取得し、別の運転スケジュール」と競合しない切り替えることにより、同一の動作を保証するに皮下順序の競合をスケジュールしますScは「Scが競合直列化可能なスケジュールをスケジュールと呼ばれ、シリアルです。スケジューリング競合直列化可能な場合、それはシリアライズスケジューリングでなければなりません
、競合シリアライズ可能なスケジュールが十分条件でシリアライズ可能なスケジューリングで必須ではありません

五、二相ロック・プロトコル

「2段階」二段階でのトランザクションの意味をロックし
、拡張期として知られている、第一段階は、封鎖を得ることです

  • トランザクションは、任意のデータ項目のロックのいずれかのタイプに適用することができますが、すべてのロックを解除することはできません

第二段階はまた、収縮期として知られる、封鎖の放出であります

  • トランザクションの任意のタイプの項目のいずれかのロックを解除することができるが、任意のロックを適用することはできません

ツーフェーズロック・プロトコルの正し

  • すべてのトランザクションは、2つのロッキングプロトコルに従うならば、これらの問題上の任意の同時スケジューリングポリシーは、直列化されています
  • 二相ロック同時実行制御プロトコルは、十分な正確さの条件ではなく、必要条件です。それは、必ずしもすべてのトランザクションは、2相ロック・プロトコルに従うすべてのトランザクションは、2相ロック・プロトコルに従うならば、これらのトランザクションのいずれかの同時スケジューリングは、同時スケジュールは、シリアル化され、逆に、シリアライズ可能であり、あります

ツーフェーズロック・プロトコルとデッドロックの方法を防ぐために封鎖

  • 封鎖法は、それ以外の場合は続行できません、各トランザクションは、一度すべてのデータあなたがロックのすべてを使用する必要がありますように、二相ロック・プロトコル封鎖法の遵守を要求します
  • しかし、2フェーズロック・プロトコルは、トランザクションが一度あなたが、すべてのロックを使用したいので、2つのロッキングプロトコルトランザクションのデッドロックを遵守し、すべてのデータが発生する可能性がありますしなければならない必要はありません。

シックス・マルチブロック・サイズ

6.1サイズ

オブジェクトのブロックサイズは粒子サイズと呼ばれ、データベース、テーブル、レコード、フィールド、およびその他であってもよい
同時実行制御オーバーヘッドと同時封鎖粒子サイズはシステムに密接に関連しています。ブロックされたより大きな粒子サイズ、より少ないデータベースは、データブロック単位、同時実行、小さいオーバーヘッドの小さい程度にすることができ、より小さな粒子サイズをブロックし、システムの同時実行の程度が高いが、より大きなオーバーヘッド
複数粒度ロック同時に異なるトランザクションのサイズ選択をブロックする複数のロックアウト手順をサポート

  • 依存データ構造 - マルチスケールツリー

    データオブジェクトは、粒子サイズおよびツリー構造、最大データサイズを表すルートノードとの間の関係によって、データベースに編成され、データは、典型的には、データベース全体の最小細分性を表し、リーフノード

多粒状ロックプロトコルは、マルチサイズツリー内の各ノードのための独立したロックを可能にし、各ノードにロックされ、その子孫は、同様にロックすることノード暗示します

  • データオブジェクトがでロック多粒状に二つの方法で遮断することができる:明示的および暗黙的なブロックBLOCK
  1. 直接明示的な封鎖封鎖と呼ばれるトランザクションデータオブジェクトが適用されます
  2. 上位ノードをロックすることにより、下位のオブジェクトによってブロックされた暗黙的なブロックと呼ばれています
  3. ブロック明示的および暗黙的封鎖の効果は同じです

また、暗黙のブロックブロックの明示的なチェックブロックをチェックするシステムの競合を確認するには
、複数の粒状ロック方法
チェックするオブジェクトロックシステムのデータのために

  • 物体の有無を明示的に封鎖と競合します
  • 明示的なターゲットブロックの競合の存在または非存在との上位ノード
  • 明示的なターゲットブロックの競合の存在または非存在との下位ノード

競合は唯一の成功をロックすることはできないとき

6.2意図的ロック

彼はロックされたノード上にあったときは、最初にその親ノード意図ロック追加する必要があります
目的を:データオブジェクトのロックの検査システムの効率向上のために
行動を:衝突チェック封鎖ロックの作業負荷を軽減します。ただ、下位ノードに再検討する必要性を排除し、下位ノード、互換性のないロックが存在するかどうかを調べるには、このノードで、このノードの親ノードは、互換性のないロック、意図的ロックを追加されているかどうかを確認
スリー意図をロック

  • 意図共有ロック(ロックIS):これは、ノード(意図)を子孫しようとすることを示すデータオブジェクト上にあるロックの速度は、追加された場合Sロック
  • ロックIX:それはノードの子孫しようとしていることを示し、データ・オブジェクトに追加した場合IXロック(意図)プラスXロック
  • SIXロック:即ちSIX = Sを、そのロックプラスSを示す、データオブジェクトSIXロックの増加した場合、プラスIXロック+ IX

ロックの強さ:それは他のロックの排除の程度を指し、代わりに弱く、強いロックの封鎖への適用時のトランザクションが安全ロックはなく、その逆も
意図ロック封鎖及び解除順序

  • 封鎖を適用するときに私たちは、上から下へ順にする必要があります
  • 順序はボトムアップのリリース遮断する必要があります

おすすめ

転載: www.cnblogs.com/xxwang1018/p/11546738.html