データベース理論では、「競合直列化可能」と「競合同等物」の違いは何ですか?
私の教科書には、シリアライズ可能な競合に関するセクションがありますが、競合の等価性については詳しく説明しています。これらはおそらく両方とも私が精通している概念ですが、用語に精通していないため、説明を探しています。
1つのことを異なる方法で説明するための2つの用語。
競合と同等:スケジュールAはスケジュールBと同等の競合であると言う必要があります。2つのスケジュールが必要です。
Conflict serializable:スケジュールAとBを引き続き使用します。スケジュールAは競合シリアル化可能と言えます。スケジュールBは競合直列化可能です。
スケジュールA/Bは競合と同等とは言いませんでした
スケジュールAはスケジュールBと直列化可能な競合とは言いませんでした
DBMSの競合は、同じ変数にアクセスする2つ以上の異なるトランザクションとして定義できます。少なくとも1つは書き込み操作です。
例えば:
_T1: Read(X)
T2: Read (X)
_
この場合、両方のトランザクションが読み取り操作のみを実行しているため、競合はありません。
ただし、次の場合:
_T1: Read(X)
T2: Write(X)
_
矛盾があります。
スケジュールS
があり、それらの命令を並べ替えることができるとしましょう。さらに2つのスケジュール_S1
_および_S2
_を作成します。
競合同等:スケジュール_S1
_および_S2
_を参照し、両方のスケジュールで競合する命令の順序を維持します。たとえば、_T1
_が_T2
_にX
を書き込む前に_S1
_がX
を読み取る必要がある場合、_S2
_でも同じである必要があります。 (順序は競合する操作に対してのみ維持する必要があります)。
Conflict Serializability:S
は、シリアルスケジュール(つまり、トランザクションが次々に実行される)と同等の競合である場合、競合シリアル化可能と呼ばれます。
Wikipedia から。
スケジュールS1
とS2
は、次の条件が満たされている場合、競合と同等であると言われます。
S1
とS2
の両方のスケジュールには、同じトランザクションセットが含まれます(各トランザクション内でアクションの順序を含む)。
S1
とS2
の競合するアクションの各ペアの順序は同じです。
スケジュールが1つ以上のシリアルスケジュールと競合-同等の場合、スケジュールは競合シリアル化可能と呼ばれます。
競合直列化可能性の別の定義は、コミットされたトランザクションのみが考慮される場合、優先順位グラフ/直列化可能性グラフが非周期である場合にのみ、スケジュールが競合直列化可能であることですトランザクションは、競合の直列化違反なしで発生する可能性があります)。
競合しない命令の一連のスワップによってスケジュールSをスケジュールS´に変換できる場合、SとS´は競合等価であると言います。
スケジュールSは、シリアルスケジュールと同等の競合である場合、競合シリアル化可能であると言います。
競合する同等のスケジュール:競合しない命令の一連のスワップによってスケジュールSをスケジュールS 'に変換できる場合、スケジュールSとS'は競合同等であると言います。
Conflict Serializable Schedule:スケジュールSは、シリアルスケジュールと同等の競合である場合、競合シリアル化可能です。
競合シリアル化可能とは、シリアルスケジュールと同等の競合を意味します。
考慮されたトランザクションスケジュールに対して競合する同等のスケジュールが少なくとも1つある場合、それはシリアル化可能な競合です。
定義はすでに完全に説明されていますが、これは非常に役立つと思う人もいます。
小さなコンソールプログラム (githubで)を開発しました。これは、競合のシリアル化のスケジュールをテストでき、優先順位グラフも描画します。