履歴(トランザクション処理) – ウィキペディア

before-content-x4

いつ 歴史 (それ フルスクール データベース理論の分野におけるコンピューターサイエンスのセクションスケジュールとシャッフルプロドックを参照)に対応します。いくつかのトランザクションの並行実行のための実行計画と呼ばれます(トランザクションシステムも参照)。これは、トランザクション操作が実行される順序を示します。トランザクション操作の可能性のあるタイプには、読み書き操作、およびスケジュール操作のコミット(トランザクションの正常な完了)と中止(トランザクションの終了)が含まれます。したがって、履歴は、並行して実行されるトランザクションのすべての操作の実行命令の名前です。 [初め]

after-content-x4

期間スケジュールは、歴史に関連して言及する必要があります。 a スケジュール 履歴の非常にコールされた接頭辞です。これに関連して、プレフィックスは次のとおりです。完全なスケジュールは歴史に対応します。スケジュールの(正式な)例は次のとおりです。

次の要素が与えられます。

3つのトランザクションの並列バージョンの場合(

t 初め t 2 t 3 {displaystyle t_ {1}、t_ {2}、t_ {3}}

)可能な履歴の1つを見ます(

h 初め {displaystyle h_ {1}}

)、彼らの執筆操作で(

)) {displaystyle w_ {i}()}

)および読み取り操作(

r )) {displaystyle r_ {i}()}

)オブジェクト上(

バツ {displaystyle x、y、z}

)関連するコミット操作(

c {displaystyle c_ {i}}

)および解体操作(

a {displaystyle a_ {i}}

)、 次のように:

歴史

可能なスケジュール(

s 初め {displaystyle s_ {1}}

)、この場合、この歴史のための完全なスケジュールは次のとおりです。

スケジュール

別の可能なスケジュール(

s 2 {displaystyle s_ {2}}

)(不完全)この歴史のための:

スケジュール

別の可能なスケジュール(

s 3 {displaystyle s_ {3}}

)(不完全)この歴史のための:

スケジュール

3つのトランザクションの並列実行には、もちろん他の履歴があります。 B. 3番目のトランザクションの2つの操作を単純に戻す場合:

歴史

読み書き操作のすべての可能な組み合わせの量ですが、 それなし コミットと解体の操作が呼び出されます shuffleprodukt 。私たちの2番目の歴史を取りましょう(

h 2 {displaystyle h_ {2}}

)基礎として、次に要素(

s 2 {displaystyle s_ {2}}

)シャッフル製品の量から(

s {displaystyleS}

) うるさい:

綿密な検査では、読み取り操作の組み合わせが同じままであることがわかりますが、コミットと解体の操作は削除されています。

シリアルおよび非保証可能な履歴、正確性基準「シリアル化可能性」 [ 編集 | ソーステキストを編集します ]

操作の特定の実行シーケンスの提示に加えて、履歴は、これらの実行結果のシリアル化を定義に保持します(および調べるための基礎です)。 [2]

1つのアカウントで次のトランザクションを想像してください。

t 初め {displaystylet_ {1}}

アカウントの残高を読むための手術を読むことと、アカウントの残高を変更するための執筆操作が含まれます。同じことが当てはまります

t 2 {displaystylet_ {2}}

。合計で、これら2つのトランザクションで4つの操作を実行する必要があります。現在、履歴は、これらの操作が処理される順序を決定します。最も明白な解決策は、たとえば、すべての操作など、次々とトランザクションの実行(「シリアル」)です。

t 初め {displaystylet_ {1}}

そして、のすべての操作

t 2 {displaystylet_ {2}}

。そのような歴史は呼ばれます シリアル履歴

トランザクションのシリアル実行が非効率的である場合、問題が発生します。たとえば、最初のトランザクションが現在ユーザー入力を待っているため、一連のトランザクションが待たなければならない場合。ただし、場合によっては、厳格な実行は必要ありません。 B.トランザクションが非常に異なるデータオブジェクトで動作する場合、または読み取り操作のみを実行する場合。この場合、低いトランザクション率(時間あたりの取引完了)を受け取ります。トランザクションスループットを増やすために、履歴はトランザクションシステムでも承認されており、いくつかのトランザクションが非常に「アクティブ」です。アクティブとは、トランザクションを意味します

t 初め {displaystylet_ {1}}

進行中のトランザクションが完了する前に実行から始めることができ、その後のトランザクションの操作は以前に既に実行できます

t 初め {displaystylet_ {1}}

完成されました。正しいのは1つです 列をなして 履歴それがシリアル履歴と同じ結果を提供するとき。

正式には、正確性基準は、トランザクションのオンライン実行のシリアル化可能性の観点から定義できます。

h {displaystyle h}

シリアル履歴に相当する場合は、シリアル化できます

h {displaystyle h ‘}

は。取引の順序

h {displaystyle h ‘}

次に、名前はシリアル化順序です。歴史上、相反する運用の相対的な順序(例:2つのライティング操作)が重要です

h {displaystyle h}

関連するトランザクションのシリアル化順序に対応します。競合する操作とは、異なるトランザクションの2つの操作が同じデータオブジェクトにアクセスし、関係する操作の少なくとも1つが操作の作成であることを意味します。

注文は一部の操作にとって重要ではないため、歴史はiを定義します。 A.すべての操作では合計順序はありませんが、主に競合する操作の相対的な順序を定義する部分的な順序のみです。このような部分的な注文は、指示されたグラフの助けを借りて提示できます。

ここに示されている歴史では、トランザクションの読み取り操作

t 初め {displaystylet_ {1}}

オブジェクト上

バツ {displaystyle x}

いつ

r 初め [ バツ ] {displaystyle r_ {1} [x]}

の執筆中に書き留めた

t 初め {displaystylet_ {1}}

の上

バツ {displaystyle x}

いつ

初め [ バツ ] {displaystyle w_ {1} [x]}

注目されています。矢印は、競合する操作の相対的な順序を示しています。ここに示されている履歴はシリアル化することはできません。

スケジューラは、次のクラスに分けることができます。

  • 悲観的 /保守的なスケジューラ。これらのスケジューラは、実行中のサイドトランザクションの運用間の対立を認識または是正しようとします。競合のための運用の遅延を好みます。
    • ブロッキングスケジューラ(ロックスケジューラ) – 上記。基準は、ロック(ロック)によって達成されます。
      • 2PL-Twas lollo。各トランザクションは2つのフェーズに分割されます。ロックは、最初のフェーズでのみリクエストされる場合があり、第2フェーズではリリースされる場合があります。したがって、データ要素のリリース後、新しいロックを要求することは許可されていません。発行されたスケジュールはCSRです。
        • C2PL-保守的な2PL。原則として、各トランザクションの開始時にすべてのロックがここで要求されます。
        • S2PL -Strict 2PL。要求されたすべての書き込みロックは、トランザクションが完了したときにのみリリースされます。このようなスケジュールもCSRに加えてSTであることが証明できます。
        • SS2PL -Strong 2PL。すべてのロックは、トランザクションが完了したときにのみリリースされます。 RGクラスのこのようなスケジュールが対応することが証明できます。
      • ツリーブロッキングプロトコル。 2PLのように、特に特別な特異性を使用している木の場合。
        • WTL-ツリーロックのみを書きます
        • RWTL-書き込みツリーロックを読みます
        • MGL-複数の粒度ロック。データベースオブジェクトは、ツリー内で階層的に整理されています。一番上の場所、z。 B.以下のテーブルとTUPEを含むデータベース。下部にロックを取得するには、少なくとも上の結び目には少なくともそのようなロックが必要です。これは、リリース時の逆の方法です。 MGLが制作したスケジュールはCSRです。
    • 非ブロッキングスケジューラ(非ロロ)
      • to-タイムテンプルプロセス(時間順序)。同期の問題を回避するために、各トランザクションのタイムスタンプは、スケジューラが最初の操作を受信するとすぐに授与されます。 2つの戦略を区別する必要があります。 待ってください 傷口
        • BTO-基本-to。のシンプルで積極的な実装。操作はデータマネージャーに直接転送され、トランザクションは遅すぎます。
      • SGT-シリアル化グラフテスター
      • 一般的な試験
  • 楽観的 /攻撃的なスケジューラ。これらのスケジューラは、いわゆる証明書によって競合テストをトランザクションの時間に移動します。彼らは3つのフェーズでトランザクションを実行します:読み取りフェーズ(操作が実行され、書き込みアクセスは一時的なローカル作業領域でのみ実行されます)、検証フェーズ(トランザクションは認証者によって検証されます)、書き込みフェーズ(一時的なローカル作業領域の内容は永続的なデータベースに転送されます)。検証フェーズと書き込み段階は中断されていないため、常に中断することなく実行されます。
  • ハイブリッドスケジューラ。彼らは、異なるプロトコルを使用できるいくつかのコンポーネントに競合テストを配布します。
    • 紛争による差別化(ターン /書き込み紛争を読む)
    • データ要素の分割権が分離当事者への区画
    • アクセスパターンに従ってデータ要素の区画

さらに、マルチバージョンスケジューラもあります。これにより、一貫性のない読み取りを避けるために、書かれたデータ要素ごとにいくつかのバージョンを保存できます。読み取り操作の実装されたプロトコルに加えて、および依存して、マルチバージョンスケジューラは、特定のバージョンの読み取りデータ要素を割り当てる必要があります。通常、ライティング操作は、それぞれのデータ要素の新しいバージョンを作成します。マルチバージョンプロトコルは、MVTO、MV2PL、MVSGT、ROMV(Mulitversionプロトコルのみを読み取る)です。

  1. TheoHärderとErhard Rahm: データベースシステム、概念、および実装技術 、第2版(2001)、413ページ
  2. TheoHärderとErhard Rahm: データベースシステム、概念、および実装技術 、第2版(2001)
after-content-x4