17. 17Copyright?2017 NTT corp. All Rights Reserved.
スケジュール空間と性能差の例
T1: Read(x) Write(y) T2: Read(x) Read(z)Read(y)
Read(x) Write(y)History: Read(y) Read(z)Read(x)
Read(x1) Write(x2)History: Read(y1) Read(z1)Read(x1)
[1] H. T. Kung and John T. Robinson. 1981. On optimistic methods for concurrency control. ACM
Trans. Database Syst. 6, 2 (June 1981)
18. 18Copyright?2017 NTT corp. All Rights Reserved.
参考: ERMIAとSilo
Kangnyeon Kim, Tianzheng Wang, Ryan Johnson, and Ippokratis Pandis. 2016. ERMIA: Fast
Memory-Optimized Database System for Heterogeneous Workloads. In Proceedings of the 2016
International Conference on Management of Data (SIGMOD '16)
参考: ERMIA(SIGMOD ’16)
ERMIAでは、TPC-Cの5ワークロードに、read-intensiveなQ2というワークロードを追加して実験を
している.
結果,Silo(単一バージョン, S2PL相当)の並行実行制御ではほぼQ2が完走しないことが報告された.
ERMIAは、「実世界のワークロードにはRead-intensiveなLong Txは混ざってくる」と主張している.
20. 20Copyright?2017 NTT corp. All Rights Reserved.
回復可能なスケジュール空間にも細分類がある.
直列化可能性に関するスケジュール空間とは直交している.
ここでは、「回復可能」と「連鎖的アボートの回避」について説明する.
回復可能性の細分類
ビュー等価なスケジュール(FSR)
競合等価なスケジュール(CSR)
回復可能スケジュール(Recoverable)
連鎖的アボートの回避スケジュール(Avoids cascading abort)
厳格スケジュール(Rigorous)
21. 21Copyright?2017 NTT corp. All Rights Reserved.
回復可能
T1: Write(x) T2: Read(x) Write(y)
AbortHistory: Read(x1) Write(y2)Write(x1)
[2] G. Weikum and G. Vossen. Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery. Morgan Kaufmann
Publishers Inc.,San Francisco, CA, USA, 2001. ISBN 1-55860-508-8.
[3] 北川博之, データベースシステム, オーム社, 2014, ISBN 4274216055
22. 22Copyright?2017 NTT corp. All Rights Reserved.
連鎖的アボートの回避
T1: Write(x) T2: Read(x) Write(y)
AbortHistory: Read(x1) Write(y2)Write(x1)
[2] G. Weikum and G. Vossen. Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery. Morgan Kaufmann
Publishers Inc.,San Francisco, CA, USA, 2001. ISBN 1-55860-508-8.
[3] 北川博之, データベースシステム, オーム社, 2014, ISBN 4274216055
AbortHistory: Read(x1) Write(y2)Write(x1) Read(x1) Read(x1) ......Read(x1)
23. 23Copyright?2017 NTT corp. All Rights Reserved.
「回復可能」スケジュールと「連鎖的アボートの回避」の差は、
“Commitするまで他のTxには値が読めない” という制約の有無のみ.
これは以下のように実装する.
? Commit後にWrite-Lockを手放す
? Commitするまで他のReaderをwaitさせるか、即abortさせる
VLDB ‘17の論文では、この性能特性の違いをマイクロベンチマークしている.
回復可能と連鎖的アボートの回避
Jose M. Faleiro, Daniel J. Abadi, and Joseph M. Hellerstein. 2017. High performance
transactions via early write visibility. Proc. VLDB Endow. 10, 5 (January 2017), 613-624. DOI:
https://doi.org/10.14778/3055540.3055553
縦軸: スループット
横軸: Hot Recordに触るタイミング
Read-modify-writeを10 recordに行
うマイクロベンチマーク.
10’000’000 recordsからランダムに選
択する, low contended workload.
ただし、全てのTxがひとつだけ、同じ
hot recordに触る.
早期にhot recordに触るほど(右),
ロック保持期間が延び、性能が落ちる.
24. 24Copyright?2017 NTT corp. All Rights Reserved.
回復可能スケジュールの適用
「連鎖的アボートの回避」を実装すると、全てのロックを同じタイミング(コミット
時)まで手放すことができない.
これを改善し、かつ「連鎖的アボート」の性能ペナルティは最小限にしたい.
そこで”部分的に” 回復可能スケジュールを適用することで性能を向上させる、以下
の手法が提案されている.
? Group Commit [Gawlick et al. DE Bull 1985]
? Early Lock Release [Johnson et al. VLDB 2010]
? Speculative Read/Speculative Ignore [Larson et al. VLDB 2011]
? Piece-Wise Visibility(PWV)[Faleiro et al. VLDB 2017]
前述したGroup Commit/ELRも「回復可能と連鎖的アボートの回避」の観点で説
明できる. というのが面白い.
25. 25Copyright?2017 NTT corp. All Rights Reserved.
Group Commitは、「複数のTxをバッファし、まとめてログ書き出しすることに
よってI/O回数を減らす」アプローチ.
Early Lock Releaseは、「ログの書き出しをCommit pointと見なすことによっ
て、早期にロックを解放する」アプローチ.
Group Commit + Early Lock Releaseのシステム(e.g. Silo)では、同じグル
ープ内のトランザクションのコミットは同じI/Oで確定され返却される.
すなわち、グループ内では早期にロックを解放することで「回復可能」スケジュー
ルを適用し、複数グループを全体としては「連鎖的アボートの回避」スケジュール
として扱っている、とみなせる.
Group Commit & Early Lock Release
Enq
Enq
DeqDeq Flush
Enq
Enq
…Deq Deq Flush
Commit
Group
Commit
Group
各Commit Group内では早期にロ
ックを解放している分、連鎖アボ
ートが発生しうる.
Commit Groupをまたいだ連鎖ア
ボートは発生しない.
??????
26. 26Copyright?2017 NTT corp. All Rights Reserved.
Hekatonの前身となるMVCC論文では以下の構造体でMVCCを実装している.
HekatonのSpeculative Read(1)
Begin: このレコードを書いたTxのId
End: 次のレコードのTxのId or INFINITY
Name: Key
Amount: Value
Hash ptr: 次のレコードへのポインタ
Per-?ke Larson, Spyros Blanas, Cristian Diaconu, Craig Freedman, Jignesh M. Patel, and Mike Zwilling. 2011. High-performance concurrency control
mechanisms for main-memory databases. Proc. VLDB Endow. 5, 4 (December 2011), 298-309. DOI=http://dx.doi.org/10.14778/2095686.2095689
27. 27Copyright?2017 NTT corp. All Rights Reserved.
HekatonのSpeculative Read(2)
[1] Xiangyao Yu, George Bezerra, Andrew Pavlo, Srinivas Devadas, and Michael Stonebraker. 2014. Staring into the abyss:
an evaluation of concurrency control with one thousand cores. Proc. VLDB Endow. 8, 3 (November 2014), 209-220.
DOI=http://dx.doi.org/10.14778/2735508.2735511
Per-?ke Larson, Spyros Blanas, Cristian Diaconu, Craig Freedman, Jignesh M. Patel, and Mike
Zwilling. 2011. High-performance concurrency control mechanisms for main-memory databases.
Proc. VLDB Endow. 5, 4 (December 2011), 298-309.
DOI=http://dx.doi.org/10.14778/2095686.2095689
29. 29Copyright?2017 NTT corp. All Rights Reserved.
回復可能スケジュールを部分的に適用するに
あたり、各トランザクションのstatements
は全て宣言済み(静的解析可能)であり、決定
的動作をするものと限定される.
(全てのabortが明示的に宣言されている)
これを静的解析することにより、各
statementの依存関係グラフを描く.
このとき,他のstatementに依存されていな
いstatementのwriteは、早期にvisibleに出
来るはず, というアプローチ.
(abortするstatementの後なら、例えば’S’のインクリメン
トは早期にvisibleにしても連鎖アボートせずリカバリ可能.)
このとき、トランザクションのPieceが以下
の条件に反しない限り、早期にVisibleにして
も並列実行してもSerializableである:
1. Abortしうるpieceは全てVisible pointに先行する.
2. AbortしうるPieceとW-R,W-Wの依存があるpieceは、
その実行を待つ.
3. AbortしないPieceは、Visible point以後に実行できる.
4. R-Wの依存は、常に待つ.
Jose M. Faleiro, Daniel J. Abadi, and Joseph M. Hellerstein. 2017. High performance
transactions via early write visibility. Proc. VLDB Endow. 10, 5 (January 2017), 613-624. DOI:
https://doi.org/10.14778/3055540.3055553
Piece-Wise Visibility [Faleiro et al, VLDB 2017]
30. 30Copyright?2017 NTT corp. All Rights Reserved.
? 並行実行制御に関して、性能向上手法について紹介した.
? エンジニアリング的手法
? Group Commit
? Early Lock Release
? Flush Pipelining
? 理論的手法
? Early Write Visibilityの概説
? Speculative Read
? Piece-wise Visibility
? 発表の便宜上、区分をしたが、両者に差分がないこともある.
? Group Commit & Early Lock Releaseはどちらとも言える.
? 釈迦に説法だったかもしれませんが、以後お見知りおきを.
まとめ
31. 31Copyright?2017 NTT corp. All Rights Reserved.
? Early Lock Release, Flush Pipelining:
? Aether: A Scalable Approarch to Logging [Johnson, et
al. VLDB 2010]
? Hekaton MVCC:
? High Performance Concurrency Control Mechanisms for
Main-Memory Databases [Larson et al. VLDB 2011]
? Piece-wise Visibility(Early Write Visibility):
? High Performance transactions via early write visibility
[Faleiro et al. VLDB 2017]
References