Transactional Information Systems 5章 MVCC勉強会 第一回に参加
今回読んだ内容としてはMVCCでは
- xのWrite時にデータを上書きではなく、新しいバージョンのX2を作る
- xのread時にどのバージョンを読むかを決定する、バージョン決定関数
h()
が存在する
が要点ですが、その定義や文言について議論が長く続きました。
- MVCCは理論がついてきていない。実装が先行している。→理論の再構築が必要
- MVCCは基本的にwriteロックを取らないが、現行のものでwriteロックを取らないものはない
p.188のExample 5.2の手前まで読みました。
- 作者: Gerhard Weikum,Gottfried Vossen
- 出版社/メーカー: Morgan Kaufmann
- 発売日: 2001/05/24
- メディア: ハードカバー
- クリック: 2回
- この商品を含むブログ (2件) を見る
感想
参加要件
と書かれていますが、CSR,FSR,VSRなど各シリアライゼーションの意味を把握した上で、本書の内容も理解できているような レベルの議論がなされています。また@okachimachiorz1さんがすでに全編音読という偉業を成し遂げられているためか、@okachimachiorz1さんが内容に関して批判点(議論したい点)などをまとめたレジュメを配られた状態で始まりました。
- 5章までの全内容+勉強会中に読む範囲の予習をした上で自分なりの意見を持つくらいのレベルが要求されていると思いました。
次回までにもうちょっとパワーアップして臨みたいです。
- okachimachiorz1さんkumagiさんがネット上に書かれたトランザクション関連の情報を読んで自分なりの理解を持つ。
- ぱとさんのブログに書かれているような感じで読んでいきたいです。 taityo-diary.hatenablog.jp
- Tx本2,3章の内容を重点的に読む
- トランザクションのアノマリーやisolationに関して自分なりに理解してブログを書く
以下ちょっとした内容のまとめです(まとまってない...)
5.1 Goal and Overview
処理中だけmultiversion。未来永劫マルチバージョンではない。
リカバリも重要。処理中のバッファとリカバリのためのバックアップは別。 バージョンという言葉が意味するものを正確に定義する必要がある。
commitの意味が変わってきた
We will also look at the storage space needed to hold multiple versions.
ディスクベースで書かれている。インメモリのことも考えないといけない。
- バージョンをストレージに保存する必要があるか
- リカバリできるならいらない。
マルチバージョンの時のバージョン数の問題をどう考えているか?
- マルチバージョンの性能をあげるには、バージョンの数を少なくする必要があるという風潮がある
- 古いものはほとんどいらない
- いると思う。read-onlyで必要。
- 複数書くのは賛成だが、沢山書くのは反対。
- LOSTアップデートのアノマリーの定義が必要(曖昧)
- インクリメンタルな操作を行う2つのスレッドだと、片方でロストアップデートが起こる。
- それはreadがおかしい
- インクリメンタルな操作を行う2つのスレッドだと、片方でロストアップデートが起こる。
- バージョンコントロールデータベース、というものもある。それはMVCCと混同すべきではない
The discussion in this chapter continues to consider unaborted transactions only.
重要なことが最後に書かれている...
- アボートはその種類の考慮が必要
- システムアボート
- ユーザーアボート
- ユーザーアボート不要論
- 半順序宣言をユーザーが終えた、というのがユーザーコミット?(よくわからない)
- アボートはその種類の考慮が必要
感想:アボート、コミット、チェックポイントなどなど、システムとユーザーで意味が大きく違う気がする
5.2 Multiversion Schedules
- CSRとは
- コンフリクトの定義は?
- writeが入ること?
- この本では交換可能性
- 順番を変えて意味が変わるならコンフリクト、変わらないならコンフリクトフリー
EXAMPLE 5.1
s = r1(x)w1(x)r2(x)w2(y)r1(y)w1(z)c1c2
バージョンという概念を導入するとExample5.1のhistoryの入れ替えができる。
DEFINITION 5.1
installとは何か??commitと対になって出てきたが...
過去の論文でread,write,commit,abortの定義を調べたが、writeの明確な定義はない。(古い時代の論文のサーベイ結果)
- RWCAは個々のデータベースで定義すべき
DEFINITION 5.1の2の意味がわからない。
余談
スヌーピー!その発想はなかったです。これからはスヌーピーということにしていきます!
— ゆううき (@y_uuk1) 2018年11月15日
これからはスヌーピーでいきます
— ゆううき (@y_uuk1) 2018年11月15日