Skip to main content
QUICK REVIEW

[論文レビュー] Repairing Conflicts among MVCC Transactions

Mohammad Dashti, Sachin Basil John|arXiv (Cornell University)|Mar 2, 2016
Distributed systems and fault tolerance参考文献 19被引用数 3
ひとこと要約

本論文は、トランザクションの全再実行を回避し、代わりに矛盾するコードブロックのみを部分的に再実行することで、トランザクションの衝突を解消する新規なMVCC並行制御アルゴリズムMV3Cを提案する。軽量な依存関係アノテーションとクロージャー基盤の修復メカニズムを用いることで、高コンテンツ状況下でもオーバーヘッドを低減し、衝突のない状況ではほぼゼロのパフォーマンスペナルティを達成するとともに、衝突が頻発する状況では顕著な高速化を実現する。

ABSTRACT

The optimistic variants of MVCC (Multi-Version Concurrency Control) avoid blocking concurrent transactions at the cost of having a validation phase. Upon failure in the validation phase, the transaction is usually aborted and restarted from scratch. The "abort and restart" approach becomes a performance bottleneck for the use cases with high contention objects or long running transactions. In addition, restarting from scratch creates a negative feedback loop in the system, because the system incurs additional overhead that may create even further conflicts. In this paper, we propose a novel approach for conflict resolution in MVCC for in-memory databases. This low overhead approach summarizes the transaction programs in the form of a dependency graph. The dependency graph also contains the constructs used in the validation phase of the MVCC algorithm. Then, in the case of encountering conflicts among transactions, the conflict locations in the program are quickly detected, and the conflicting transactions are partially re-executed. This approach maximizes the reuse of the computations done in the initial execution round, and increases the transaction processing throughput.

研究の動機と目的

  • 楽観的MVCCにおける「アボート・リスタート」戦略が引き起こすパフォーマンスボトルネックを解消すること、特に高コンテンツ状況または長時間実行のトランザクション下で。
  • アボートがコンテンツ状況を悪化させ、さらなる衝突を引き起こす負のフィードバックループを排除すること。
  • 再計算を完全に再開するのではなく、過去の計算を再利用する低オーバーヘッドの衝突解消メカニズムを設計すること。
  • 依存関係アノテーションを用いて関係するコードブロックを特定し、それらのみを再実行することで、衝突トランザクションを効率的に修復すること。

提案手法

  • MV3Cアルゴリズムは、データおよび制御依存関係を追跡するための軽量なアノテーションを用いて、トランザクションプログラムから依存関係グラフを構築する。
  • 衝突は、検証段階で読み取り操作が古くなったデータバージョンにアクセスしているかどうかをチェックすることで検出される。
  • 衝突が発生した場合、クロージャー境界によって特定された依存するコードブロックのみが再実行され、再計算量が最小限に抑えられる。
  • 予測グラフとコンパイラ最適化済みクロージャーを用いることで、ランタイムオーバーヘッドを低く保つ。
  • 書き込み同士の衝突は、コミット時まで衝突解消を延期することで、早期のアボートを回避する。
  • 長時間実行のクエリに対しては、追加の結果セット修復メカニズムを提供し、回復効率をさらに向上させる。

実験結果

リサーチクエスチョン

  • RQ1トランザクションの矛盾部分のみを部分的に再実行することで、MVCCにおける衝突解消を改善できるか?
  • RQ2衝突のない実行状況下で、依存関係アノテーションおよび修復メカニズムを維持する際のパフォーマンスオーバーヘッドはどの程度か?
  • RQ3増加するトランザクションコンテンツ状況下で、MV3Cは従来の楽観的MVCC(OMVCC)と比較してどのように性能を発揮するか?
  • RQ4MV3Cは、早期アボートなしで書き込み同士の衝突を効果的に処理できるか?
  • RQ5部分的修復は、後続のトランザクションに及ぼす衝突のリバーブ効果をどの程度低減できるか?

主な発見

  • 衝突のない状況では、MV3Cはシリアル実行および並列実行の両方において、OMVCCと比較して1%未満のオーバーヘッドにとどまる。
  • トレーディングベンチマークのような高コンテンツ状況下で、Zipfパラメータαを増加させた場合、500万件のトランザクション処理時間をMV3CがOMVCCと比較して顕著に短縮する。
  • リバーブ効果の実験では、MV3Cの修復メカニズムが全体のシステム負荷を低減し、連鎖的な衝突を防ぐ一方、OMVCCはコンテンツ状況の悪化に伴い深刻な影響を受ける。
  • 1つのウェアハウスを用いたTPC-Cベンチマークにおいて、MV3CはOMVCCとほぼ同等のパフォーマンスを達成しており、高トランザクション複雑性下でも測定可能なオーバーヘッドがないことを確認した。
  • 長時間実行のクエリと高コンテンツ状況下では、MV3Cの修復メカニズムは、完全なアボート・リスタートが極めて高コストとなる状況において特に効果的である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。