原文
- PALM: Parallel Architecture-Friendly Latch-Free Modifications to B+ Trees on Many-Core Processors
http://www.vldb.org/pvldb/vol4/p795-sewall.pdf
關(guān)鍵詞
Latch-free: 無鎖(且無自旋鎖)
scalable: 可擴(kuò)展的
Transitions: 轉(zhuǎn)換 過度
state-of-the art: 最新,最先進(jìn)
40M:
The suffix ‘K’ indicates ‘thousand’, the suffix ‘M’ indicates ‘million’, and the suffix
‘B’ indicates ‘billion.
locks and latches
按照Graefe [11],我們對(duì)鎖和閂鎖進(jìn)行了區(qū)分。 前者是與數(shù)據(jù)庫事務(wù)的語義有關(guān)的概念,
而使用后者在線程級(jí)別控制對(duì)內(nèi)存中數(shù)據(jù)的更新-這些是指的“鎖”到數(shù)據(jù)庫社區(qū)之外
本文沒有特殊標(biāo)注locks 的鎖, 都指latches.
PALM: 一個(gè)并行友好架構(gòu),在多核處理器上可無鎖修改的B+樹
作者
Jason Sewall Jatin Chhugani Changkyu Kim Nadathur Satish Pradeep Dubey
Parallel Computing Lab
Intel Corporation
Contact: jason.sewall@intel.com
ABSTRACT 摘要
B +樹上的并發(fā)控制主要是通過閂鎖實(shí)現(xiàn)的,但是序列化和競(jìng)爭(zhēng)會(huì)阻礙可擴(kuò)展性。 如今,隨著處理器的數(shù)量在增加,必須發(fā)展可擴(kuò)展的無閂鎖技術(shù),用于并發(fā)控制。
我們提出PALM,這是一種新穎的內(nèi)存B +樹,為了實(shí)現(xiàn)多并發(fā)查詢操作,PALM基于批量同步并行模型,可確保沒有死鎖和競(jìng)爭(zhēng)。輸入查詢會(huì)被分組,并按原子批次( atomic batches)進(jìn)行處理,然后分階段進(jìn)行工作,排除競(jìng)爭(zhēng)。 階段之間過度的實(shí)現(xiàn),具有可擴(kuò)展的點(diǎn)對(duì)點(diǎn)通信。PALM利用現(xiàn)代多核體系結(jié)構(gòu)上,的數(shù)據(jù)和線程級(jí)并行性,實(shí)現(xiàn)40M updates/second on tree with 128M keys, 128M updates/second on trees with 512K keys 在最新的CPU 架構(gòu)上。我們的吞吐量是內(nèi)存B +樹上最新并發(fā)修改算法的2.3倍至19倍。
372/5000
PALM在非常低的響應(yīng)時(shí)間下(小于350μs)可獲得接近峰值的吞吐量,即使對(duì)于大樹也是如此。
我們還在以下方面評(píng)估PALM:英特爾多核集成(Intel MIC)架構(gòu),并在Intel Knights Ferry上展示了 out-of-cache tree sizes的1.5–2.1倍加速, 超過了一對(duì) dual-socket配置的,Intel Xeon 處理器 DP X5680(Westmere-EP) 。
1. INTRODUCTION 介紹
B +樹是中使用最廣泛的數(shù)據(jù)結(jié)構(gòu)之一,在數(shù)據(jù)庫中[12],并且曾經(jīng)很多工作是通過他們實(shí)現(xiàn)最佳性能。其中 很大一部分工作涉及并發(fā)控制,以實(shí)現(xiàn)并行計(jì)算[3、4、23、33、18、24、11]。
該領(lǐng)域的許多工作集中在基于磁盤的數(shù)據(jù)庫上。 這些系統(tǒng)的性能通常受磁盤I / O帶寬的限制。 但是,隨著內(nèi)存容量的急劇增加,現(xiàn)在許多數(shù)據(jù)庫表及其對(duì)應(yīng)的索引結(jié)構(gòu),完全駐留在主內(nèi)存中-消除了磁盤I / O操作。 現(xiàn)在已有的系統(tǒng)具有超過1TB的內(nèi)存; 這預(yù)示下一代系統(tǒng)的未來。
此外,現(xiàn)代處理器提高了計(jì)算能力,通過在單個(gè)芯片上集成多個(gè)內(nèi)核,極大地提高了每個(gè)中擴(kuò)展單指令多數(shù)據(jù)(SIMD)單元核心。 在可預(yù)見的未來,計(jì)算能力的最大增長,將來自不斷增加的并行性; 可擴(kuò)展并行算法至關(guān)重要。
2. RELATED WORK 相關(guān)工作
B樹[2]旨在加速對(duì)基于磁盤的數(shù)據(jù)庫的搜索查詢,同時(shí)支持修改。 早期就意識(shí)到,查詢同時(shí)并發(fā)執(zhí)行更新的重要性,很大的工作量在B樹上的并發(fā)的控制。 許多早期的論文專注于閂鎖耦合,使用讀取閂鎖和更新閂鎖來支持并發(fā)和擺脫死鎖。 Bayer 和McCreight [3]]提出了很多依靠預(yù)測(cè)分裂的鎖方案; Bernstein等 [4]涵蓋了許多用于B樹的鎖的協(xié)議。
Lehman和 Yao 提出的B-link樹[23],放寬了B-樹的結(jié)構(gòu),以允許節(jié)點(diǎn)使用高隔離的鍵和指針分別指向后繼節(jié)點(diǎn)
3. PARALLEL BATCHED TREE QUERIES 并行批處理樹的查詢
3.1 Motivation 動(dòng)機(jī)
PALM 在內(nèi)存中操作B+樹, 該樹索引了數(shù)據(jù)庫D的某一列的鍵的自全序集合K,該樹存儲(chǔ)鍵值對(duì)pairs(K, r*k)
指針r r?k 指向了第二個(gè)結(jié)構(gòu)rk, rk枚舉了D數(shù)據(jù)庫中 所有鍵值為K的元組的id。
此間接尋址為典型數(shù)據(jù)庫,支持多個(gè)元組的有相同鍵值。對(duì)于樹 TD索引了數(shù)據(jù)庫D,
PALM支持三個(gè)具有以下語義的查詢:
取
RETRIEVE (TD, k): Return rk, or ? if k /∈ TD.
插入
INSERT (TD,(k, e)):
If k ∈ TD, append e to rk;
otherwise, add anew rk = {e}, and add the new pair (k, r?k) to TD.
刪除
DELETE (TD,(k, e)): If k ∈ TD, remove e from rk,
then if |rk| = 0, remove (k, r?k) from TD. If k /∈ TD, do nothing.
取操作是嚴(yán)格 read query and returns results, 然而插入和刪除是 read/write (modify) queries returning nothing。
此外,取操作之間互相沒有影響,插入和刪除會(huì)影響其他操作的結(jié)果,僅當(dāng)他們使用相同鍵時(shí)
這些特性 These properties allow O to reordered (see Sec. 3.2.5).
3.1.1 Asynchronous tree queries 異步
3.1.2 Synchronous tree queries 同步
3.2 Algorithm 算法
3.2.1 Cooperation in REDISTRIBUTE-WORK
3.2.2 Ensuring correctness with RESOLVE-HAZARDS
3.2.3 Bulk node modification with MODIFY-NODE
3.3 Load balancing
4. IMPLEMENTATION
5. RESULTS
6. DISCUSSION AND CONCLUSION
7. REFERENCES
APPENDIX 附錄
A. POINT-TO-POINT SYNCHRONIZATION
B. NODE REPRESENTATION
C. PERFORMANCE MODELING