Transactional Information Systems 第11章 演習問題解答
Transactional Information Systemsにおける第11章演習問題の自分なりの解答。
間違っていたらご指摘ください。
11.1 Q
と について、
と、対応する削減済みのスケジュールは?
11.1 A
アボートを時系列逆順の逆操作+コミットに置き換える。
隣接した逆操作どうしを相殺すると
11.2 Q
各スケジュールのRC,ST,RG,PRED,LRC性を判定せよ。
11.2 A
s1は、t1が書き込んだデータが終了時まで読み込まれないのでST、ゆえに自明にRCでもある。一方、t2が読み込んだデータが終了前にt1に変更されているのでRGではない。RCかつ、writeが一つしかないので自明にLRCであり、LRCかつCSRであることからPREDでもある。
よって
s2は、t1が書き込んだaにt1の終了前にt2が書き込んでいるのでSTでない。一方、reads-from関係がないので自明にRCである。また、 なのに なのでLRCでなく、したがってPREDでもない。
よって
incr(a)はr(a)w(a)に相当する。なのでs3は、t2の書き込んだbを読んでいるt3がコミットしているのにt2がアボートしていることになり、RCでない。RCじゃないのでLRCでもなく、したがってPREDでもない。
よって
11.3 Q
各スケジュールのRC,ACA,ST性を判定せよ。
11.3 A
s1は、t1が書き込んだxがt2に読み込まれるのがt1のコミット後なのでSTである。
s2は、t1が書き込んだxをt2が読み込んでいて、 を満たしているのでRCである。一方、読み込みがt1のコミット前に行われているのでACAではない。
s3は、t1が書き込んだxをt2が読み込んでいるのに なのでRCでない。
11.4 Q
RC,ACA,ST,RG,PREDはそれぞれprefix commit closedか?
※スケジュールクラス がprefix commit closed: ならば、そのうちコミットされたトランザクションのみを抜き出したコミット射影の任意のプレフィクス が を満たすこと。
11.4 A
RCはprefix commit closedである。
のコミット射影のプレフィクス を考える。
において という関係があるとき、コミット射影であることからプレフィクスを取る前は も含まれていたはずである。したがって、以下の2つのケースに分けられる。
- のケース。少なくとも までのプレフィクスは に残されているので も に残されている。よってRCの条件を満たす。
- もとのスケジュール のreads-from関係が異なるケース。この場合、あるコミットされていないトランザクション による書き込みが挟まり のようになるが、これは のRC性に反する( が から読み込んでコミットしているのに がコミットしていない)。よってこのようなケースはそもそも発生しない。
ACAはprefix commit closedである。
のコミット射影のプレフィクス を考える。
において という関係があったとき、
- もとの で間に挟まる への書き込みがない場合、 でも同じreads-from関係があるので、 のACA性から となって 。
- もとの で間に挟まるコミットされていないトランザクション があって となる場合、 は から読み込んでいるのに がコミットしないので のACA性に反する。よってこのようなケースはそもそも発生しない。
STはprefix commit closedである。
において という関係があったとき、もとの でも全く同じ関係があるので、 のST性より である。
RGはprefix commit closedである。
STと全く同様。 STとRGはreads-from関係じゃなく単に衝突を問題にするので簡単。
PREDはprefix commit closedである。
PREDの性質より、 の任意のプレフィクスがreducible(可換操作と逆操作の相殺の末に逐次的なスケジュールにできる)である。
よって、そのコミット射影を取り出しても、やはりコミットされていないトランザクションが消えるだけなので明らかにreducibleである。
11.5 Q
証明せよ。
11.5 A
1.
2.
3.
4.
5.
11.6 Q
任意のプレフィクスがXCSRであるようなクラスPXCSRについて以下を示せ。
11.6 A
1.
2.
3.
まず 。
次に、 を考える。競合する操作が実行されたとき、その時点で前者のトランザクションが終了している。よって、トランザクションの終了順と競合する操作の実行順が同じであり、conflict graphは閉路を持たない。よって であり、RGがprefix closedであることと合わせて 。
4.
は自明である。
まず を示す。ST性に反する もしくは があったと仮定すると、 を含まないプレフィクスの拡張スケジュールが という競合の閉路を引き起こすため矛盾。
次に、 が に属することを示す。
の プレフィクス がXCSRでないと仮定すると、もとの でコミットだったものがプレフィクスに含まれなかったためにアボートになったことが原因になっている。そのような競合サイクルは という形であり、これはST性(書き込まれたアイテムは、トランザクションの終了時まで読み込み/書き込みされない)に反する。よって 。
11.7 Q
を示せ。
11.7 A
SS2PLの性質から、一度書き込み・読み込みされたアイテムにはトランザクションの終了時までロックが保持され続けるので、それとロックが競合するような操作はトランザクションの終了後に初めて実行される。したがって である。
一方、RGであるようなスケジュールをSS2PLスケジューラに入力すると、トランザクション終了時まで競合する操作が行われないという性質が満たされているのでロックの競合によるブロッキングが発生せず、素通しになる。よって である。
11.8, 11.9
略
11.10 Q
全ての更新がトランザクション固有の空間で行われ、グローバルなデータへの反映がコミット時まで遅延される実装を考える。
ST, PRED, LRCの概念をこのような実装に応用できるか?それに意義はあるか?
11.10 A
コミット時に変更が一気に反映されるので、例えば を読みつつ変更を加えたトランザクションは のように表記できる。ここで は への書き込みとコミットを不可分に行う操作となっている。アボート時にはこの のような操作が現れず、変更が一切関知されない。=アボートしたトランザクションは存在していないのと同義。
コミット時点で変更が反映されるモデルにおいては、STはそもそも自動的に達成される(トランザクションの終了タイミングと書き込みの反映タイミングが同一)ので意味を持たない。
また、定義を考えてみるとLRCも意味を持たない。
PREDに関しては、まずこのケースでは元のスケジュールがREDであればプレフィクスがすべてREDなので、PREDとREDが等価である。またREDとCSRが等価である。よってPRED=CSR。LRCが意味を持たないこともこれの裏付けになっている。