Yabu.log

ITなどの雑記

Transactional Information Systems 5章 MVCC勉強会 第一回に参加

今回読んだ内容としてはMVCCでは

  • xのWrite時にデータを上書きではなく、新しいバージョンのX2を作る
  • xのread時にどのバージョンを読むかを決定する、バージョン決定関数h()が存在する

が要点ですが、その定義や文言について議論が長く続きました。

  • MVCCは理論がついてきていない。実装が先行している。→理論の再構築が必要
  • MVCCは基本的にwriteロックを取らないが、現行のものでwriteロックを取らないものはない

p.188のExample 5.2の手前まで読みました。

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

感想

参加要件

  • required
    • 本を持ってること(ebookでももちろん可)
    • まじめにMVCCを理解しようという気持ち
  • nice to have
    • Isolationレベルがわかるレベルの知識
    • CSRが中身はともかく「何の略語かわかる」ぐらいの知識 (本来は4章までの中身と言いたいところですが、それはちょっとハードル高そうなので。別にいいです。)

と書かれていますが、CSR,FSR,VSRなど各シリアライゼーションの意味を把握した上で、本書の内容も理解できているような レベルの議論がなされています。また@okachimachiorz1さんがすでに全編音読という偉業を成し遂げられているためか、@okachimachiorz1さんが内容に関して批判点(議論したい点)などをまとめたレジュメを配られた状態で始まりました。

  • 5章までの全内容+勉強会中に読む範囲の予習をした上で自分なりの意見を持つくらいのレベルが要求されていると思いました。

次回までにもうちょっとパワーアップして臨みたいです。

以下ちょっとした内容のまとめです(まとまってない...)

5.1 Goal and Overview

処理中だけmultiversion。未来永劫マルチバージョンではない。

リカバリも重要。処理中のバッファとリカバリのためのバックアップは別。 バージョンという言葉が意味するものを正確に定義する必要がある。

commitの意味が変わってきた

  • この本:リカバリポイント
  • 最近:リカバリの話ではない。
    • oneshot request,group commitは前提になっている。
    • "実行順序の制御"に使われている。

We will also look at the storage space needed to hold multiple versions.

  • ディスクベースで書かれている。インメモリのことも考えないといけない。

    • バージョンをストレージに保存する必要があるか
    • リカバリできるならいらない。
  • マルチバージョンの時のバージョン数の問題をどう考えているか?

    • マルチバージョンの性能をあげるには、バージョンの数を少なくする必要があるという風潮がある
    • 古いものはほとんどいらない
      • いると思う。read-onlyで必要。
      • 複数書くのは賛成だが、沢山書くのは反対。
    • LOSTアップデートのアノマリーの定義が必要(曖昧)
      • インクリメンタルな操作を行う2つのスレッドだと、片方でロストアップデートが起こる。
        • それはreadがおかしい
  • バージョンコントロールデータベース、というものもある。それは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の意味がわからない。

  • history と scheduleの違いとは?p66に乗ってる
    • scheduleはhistoryの部分集合?

余談