Transactional Information Systems 第18章 演習問題解答
Transactional Information Systemsにおける第18章演習問題の自分なりの解答。障害回復の章は重そうなので後回しで、分散トランザクションの話題から。
間違っていたらご指摘ください。
18.1
例示された半順序スケジュールの実行手順を記述する問。グラフィカルなので略。
18.2 Q
CSRでないグローバルなスケジュールが分散2PLに従って処理される例を記述せよ。
18.2 A
アイテムxを持つサーバ1とyを持つサーバ1にまたがるグローバルトランザクション はこれ自体CSRではない。
各サーバでの処理順は
サーバ1:→→ がブロック サーバ2:→→ がブロック
両者ブロックされたことでxとyでデッドロックが検出されるのでどちらかがアボート、最終的に逐次的な実行順になる。
18.3 Q
図18.10で示されたwaits-forグラフにおけるpath pushingアルゴリズムの手順を記述せよ。
18.3 A
- AがBにパス を送出
- BがCにパス を送出
- Cで閉路 が検出
18.4 Q
例18.8, 18.11, 18.12でのOptimistic Ticket Method(OTM)の挙動を記述せよ。
18.4 A
例18.8
どちらかの実行時点でチケットグラフは となって閉路になるため、どちらかのトランザクションがアボートされる。
例18.11
は同じデータアイテムへの書き込みを行わないが、take-a-ticket操作によって強制的に競合を作成される。よって、例18.8と同じく閉路 が作られてアボートされる。
例18.12
そもそも の順が各ローカルスケジュールで逆転してしまっており、OTMで管理していたらこのようなスケジュールにはならない。コミット順を無視するにしてもチケットの閉路 が生じるためいずれかがアボートされる。
18.5 Q
定理18.5を証明せよ。
( かつ、グローバルトランザクションのコミット順がサーバ間で統一されていれば、 はglobally serializable)
18.5 A
コミット順が統一されているので、これを全順序としてみれば、この全順序は のためローカルの逐次実行順に矛盾せず、したがって定理18.1より はglobally serializable。コミット順と競合する操作の順は全て一致するので でもある。
18.6 Q
なら を示せ。
18.6 A
サーバ における競合もグローバルなコミット順に沿って生じるのでこれは明らか。
18.7 Q
をみたすスケジュールの例を挙げよ。
※ : グローバルなトランザクション間でだけ競合に則したコミット順を要求する正当性
18.7 A
はグローバルトランザクションが のみなので明らかにECOCSRに属するが、yにおける競合がコミット順に則さないのでCOCSRではない。
18.8 Q
各プロトコルにおいてチケットを取得する操作の適切なタイミングを考えよ。
18.8 A
- 2PL:チケット操作には排他ロックが必要になるので、保持している期間をできるだけ短くしたい。よって、ロックの取得フェーズから解放フェーズへの転換点で実行するとよい。
- S2PL, SS2PL:2PLと同じ理由で、排他ロックが解放されるタイミングであるコミット直前に実行するとよい。
- BOCC, FOCC:validation(検証)フェーズの開始直前、write setに基づいて各サーバでチケットを取得する。
- ROMV:タイムスタンプとチケット取得タイミングを可能な限り同期させるため、
18.9 Q
各ローカルスケジュールのMVSR性が保証されている状況でOptimistic Ticket Method(OTM)を考えることはできるか?どんな条件が必要か?
18.9 A
MVSG(Multi-Version Serialization Graph)におけるグローバルトランザクション間のパスがローカルスケジュールによって作られるなら、それがローカルなトランザクションを介した間接的なものであってもチケット上の辺として観測できなければならない。
今やチケットもマルチバージョンであることを踏まえると、チケット取得操作を定義しなおす必要がある。現在アクティブなトランザクションによって書き込まれたバージョンのチケットをすべて読み込み、新しいバージョンを書き込むようにし、読み込んだ全バージョンに応じた辺をチケットグラフ上に作る。
18.10 Q
ローカルスケジュールがsnapshot isolationを満たすとき、グローバルトランザクションについては何が言えるか?
18.10 A
ローカルスケジュールにおいて現在アクティブなトランザクションとwrite setが互いに素な時、グローバルで見ても全く同じことが言える。また、直近のコミットされたバージョンを読み込むという条件も満たされる。
以上より、ローカルスケジュールがsnapshot isolationを満たしているとき、グローバルなsnapshot isolationも達成される。ただし、コミットタイミングが同期されていることは必要である。このことからパフォーマンスは高い。
18.11
グラフィカルなので略。
概要としては、ロックを要求する際、ロック権限を全ページのhomeであるサーバCに要求する。要求した権限が排他ロックで、かつそのページへの権限を他のサーバが持っていた時に限り、サーバCは他サーバへコールバックリクエストを送り、コールバックが承認された時点で改めてロック権限を引き渡す。