[論文レビュー] DGCC:A New Dependency Graph based Concurrency Control Protocol for Multicore Database Systems
本稿では、マルチコア主記憶域OLTPシステムにおけるトランザクション実行から並行制御を分離する依存グラフベースの並行制御プロトコルDGCCを提案する。事前にトランザクション依存関係を分析し、実行前に競合を解決することで、ランタイムでの競合がゼロとなる高並列性を実現し、高競合ワークロード下で最先端のプロトコルと比較して最大4倍のスループットを達成する。
Multicore CPUs and large memories are increasingly becoming the norm in modern computer systems. However, current database management systems (DBMSs) are generally ineffective in exploiting the parallelism of such systems. In particular, contention can lead to a dramatic fall in performance. In this paper, we propose a new concurrency control protocol called DGCC (Dependency Graph based Concurrency Control) that separates concurrency control from execution. DGCC builds dependency graphs for batched transactions before executing them. Using these graphs, contentions within the same batch of transactions are resolved before execution. As a result, the execution of the transactions does not need to deal with contention while maintaining full equivalence to that of serialized execution. This better exploits multicore hardware and achieves higher level of parallelism. To facilitate DGCC, we have also proposed a system architecture that does not have certain centralized control components yielding better scalability, as well as supports a more efficient recovery mechanism. Our extensive experimental study shows that DGCC achieves up to four times higher throughput compared to that of state-of-the-art concurrency control protocols for high contention workloads.
研究の動機と目的
- 現代のマルチコア主記憶域OLTPシステムにおける従来の並行制御プロトコル(例:ロックベース、タイムスタンプベース)のスケーラビリティの低さとパフォーマンスボトルネックを解決すること。
- 集中型制御コンponentと競合によるアボートが並列性とスループットを制限する問題を克服すること。
- 依存関係分析と実行の分離により、細粒度の操作レベル並列性を活用してより高いトランザクションスループットを実現すること。
- 集中型制御コンponentを排除したスケーラブルなシステムアーキテクチャを設計し、効率的な回復メカニズムを統合すること。
提案手法
- バッチ処理を行い、トランザクションを原子的演算に分解することで、細粒度の並列性を可能にする。
- 各バッチのトランザクションに対して依存グラフを構築し、演算間の読み書き競合および書き込み同士の競合をモデル化する。
- 依存グラフを用いて、実行前に可串列化順序で演算を事前スケジューリングすることで、ランタイムでの競合を排除する。
- 非競合な演算は複数スレッドで並列に実行し、可串列化性を保証する。
- 依存関係分析フェーズを実行フェーズとは別に処理することで、並行制御ロジックと実行を分離する。
- グローバルロックマネージャーやタイムスタンプアロケータなどの集中型コンponentを排除することで、スケーラビリティを向上させる。
実験結果
リサーチクエスチョン
- RQ1依存関係分析と実行を分離する並行制御プロトコルが、高競合マルチコア主記憶域OLTPワークロードでより高いスループットを達成できるか。
- RQ2依存グラフを用いて競合を事前に解決することで、従来のロックベースやタイムスタンプベースのプロトコルと比較して、アボート率と並列性にどのような影響を与えるか。
- RQ3集中型制御コンponentの欠如が、マルチコアシステムにおけるスケーラビリティにどの程度向上効果をもたらすか。
- RQ4バッチサイズと依存グラフの複雑さが、システムの遅延とスループットに与える影響は何か。
主な発見
- DGCCは、TPC-C や YCSB のような高競合ワークロードにおいて、最先端の並行制御プロトコルと比較して最大4倍のスループットを達成する。
- グラフ構築段階で競合を解決することで、アボート率が顕著に低減される。
- バッチサイズが一定の点まで増加するとスループットが向上するが、その後、より大きな依存グラフの影響で遅延が増加し始める。
- より多くのワーカースレッドが利用可能になると、システムは効果的にスケーリングされ、計算リソースを十分に活用するにはより大きなバッチサイズが必要となる。
- グローバルロックマネージャーやタイムスタンプアロケータなどの集中型コンponentの削除により、システムのスケーラビリティが向上する。
- プロトタイプは効率的な回復メカニズムを統合しており、スループットを犠牲にすることなく、高性能なクラッシュ回復をサポートする。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。