溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》
  • 首頁(yè) > 
  • 教程 > 
  • 數(shù)據(jù)庫(kù) > 
  • 騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)

發(fā)布時(shí)間:2020-08-03 06:32:49 來(lái)源:網(wǎng)絡(luò) 閱讀:1850 作者:騰訊技術(shù) 欄目:數(shù)據(jù)庫(kù)

本文根據(jù)朱閱岸老師在〖Gdevops 2017全球敏捷運(yùn)維峰會(huì)廣州站〗現(xiàn)場(chǎng)演講內(nèi)容整理而成。


騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


在公眾號(hào)對(duì)話框回復(fù)“數(shù)據(jù)庫(kù)技術(shù)”,可獲取完整PPT




講師介紹

朱閱岸,中國(guó)人民大學(xué)博士,騰訊基礎(chǔ)架構(gòu)部高級(jí)工程師。研究方向主要為數(shù)據(jù)庫(kù)系統(tǒng)理論與實(shí)現(xiàn)、新硬件平臺(tái)下的數(shù)據(jù)庫(kù)系統(tǒng)以及TP+AP型混合系統(tǒng)。


本次分享大綱:

  1. 現(xiàn)代處理器及新型存儲(chǔ)的發(fā)展

  2. 現(xiàn)代處理器下的數(shù)據(jù)庫(kù)技術(shù)

  3. 面向新型存儲(chǔ)的數(shù)據(jù)庫(kù)系統(tǒng)

  4. 總結(jié)


大家應(yīng)該都看過(guò)《星際穿越》,里面有很多震撼人心的場(chǎng)景,我個(gè)人印象較為深刻的還是老教授鼓勵(lì)庫(kù)珀去探索太空、尋找人類(lèi)宜居星球時(shí)念的那首詩(shī):“Do  not  go  gentle  into  that  good   night…Though wise men at their end know dark is right…”,意思就是不要溫柔地走進(jìn)那個(gè)良夜。對(duì)于技術(shù)人來(lái)說(shuō),數(shù)據(jù)庫(kù)系統(tǒng)底層硬件面臨著革新,我們也應(yīng)該去探索新技術(shù),以更好地適配這些底層硬件,而不是停留在原地,因此我拿這句詩(shī)作為本次分享的開(kāi)始。

現(xiàn)代處理器及新型存儲(chǔ)的發(fā)展


1、現(xiàn)代處理器

先給大家介紹一下現(xiàn)代處理器及新型存儲(chǔ)的發(fā)展。大概從2005年開(kāi)始,CPU的生產(chǎn)商就不再追求CPU的頻率而轉(zhuǎn)向多核技術(shù)研究,這里一個(gè)很重要的原因就是能耗和制造工藝上的問(wèn)題,使得他們不能再單純地追求提升頻率。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


在當(dāng)前普通的服務(wù)器上,配備幾十個(gè)處理核心的處理器已相當(dāng)常見(jiàn),眾核的概念也開(kāi)始流行起來(lái)。那什么是眾核?眾核,是在英文上有一個(gè)專門(mén)的詞,叫做many-core,跟單核是對(duì)應(yīng)的,主要是指集成了成百上千個(gè)處理核心的處理器。多核處理器大家可能很熟悉了,但大家有沒(méi)注意到memory-wall效應(yīng)這個(gè)現(xiàn)象呢?


以前CPU訪問(wèn)一個(gè)內(nèi)存,大概只要一個(gè)時(shí)間周期的時(shí)間,現(xiàn)在需要上百個(gè)時(shí)間周期,訪問(wèn)內(nèi)存成了一個(gè)比較昂貴的操作,特別是在如今大內(nèi)存和內(nèi)存計(jì)算這個(gè)環(huán)境下,memory-wall的效應(yīng)更加嚴(yán)重,所以怎么樣去克服,使得程序具有局部性,成為了最重要的一件事情,即如何克服memory wall的問(wèn)題。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)



2、新型存儲(chǔ)設(shè)備

大家是否聽(tīng)過(guò)非易失性內(nèi)存?英特爾剛剛推出的3D XPoint技術(shù),就屬于這類(lèi)范疇的技術(shù),即內(nèi)存掉電了以后,數(shù)據(jù)不會(huì)丟失。它兼具磁盤(pán)和內(nèi)存的特性,結(jié)合了兩者的優(yōu)點(diǎn),也就是具有磁盤(pán)的持久存儲(chǔ)特性和內(nèi)存的快速訪問(wèn),主要特點(diǎn)是非低失、低延時(shí)、大容量,以及讀寫(xiě)不對(duì)稱。


大家可以想象一下,有了這種硬件以后,我們系統(tǒng)設(shè)計(jì)者需要考慮的東西就不再是所謂的I/O的問(wèn)題了,而是可以專注地把注意力放在高性能計(jì)算上,通俗地講就是關(guān)注系統(tǒng)的擴(kuò)展性問(wèn)題。


  • 原理介紹

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


剛才所說(shuō)的新型存儲(chǔ)——非易失性內(nèi)存主要有以下四種實(shí)現(xiàn),其中最為成熟、最具市場(chǎng)前景的就是這個(gè)稱之為相變存儲(chǔ)的技術(shù)。


  1. 相變存儲(chǔ)器:材料可以在結(jié)晶狀態(tài)與非結(jié)晶狀態(tài)轉(zhuǎn)變

  2. 自旋磁矩:改變兩層磁性材料磁矩方向

  3. 鐵電材料:材料所形成的電荷高低,二元狀態(tài)

  4. 憶阻器:是一種有記憶功能的非線性電阻

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


根據(jù)國(guó)外工程師的逆向工程,英特爾的3D XPoint(傲騰),采用的就是這種技術(shù)。它的技術(shù)特點(diǎn)是利用相變材料,具有結(jié)晶和非結(jié)晶兩種狀態(tài),這兩種狀態(tài)對(duì)應(yīng)著低電阻和高電阻,對(duì)應(yīng)著1和0。相比存儲(chǔ)器的單元結(jié)構(gòu)主要有以下部件組成:雙層的導(dǎo)熱片,然后加熱絕緣體,以及相變材質(zhì)。通過(guò)加熱器,對(duì)這個(gè)相變材質(zhì)進(jìn)行加熱,它就會(huì)呈現(xiàn)結(jié)晶和非結(jié)晶兩種狀態(tài)。其它的技術(shù)實(shí)現(xiàn),有興趣可私下討論,這里就不多講了。


  • 相關(guān)參數(shù)


主要還是PCM的技術(shù),是目前最為重要的一種技術(shù)。我們來(lái)看一下它的參數(shù),這里主要是一些相關(guān)文獻(xiàn)上摘取的數(shù)據(jù),其中我們比較關(guān)注的是讀寫(xiě)延遲、帶寬、壽命,以及密度(容量)。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


從表格中可以看到,PCM和Flash相比,它的讀寫(xiě)延遲要低兩個(gè)數(shù)量級(jí),而它的壽命要高兩個(gè)數(shù)量級(jí),并且容量的大小和Flash差不多,而跟內(nèi)存相比,它的讀延遲已經(jīng)是很接近了,但這個(gè)寫(xiě)延遲和帶寬上還有差距,所以目前而言,PCM代替內(nèi)存是不可能的事情,而在一段時(shí)間內(nèi)這兩種存儲(chǔ)是會(huì)共同存在于計(jì)算機(jī)體系結(jié)構(gòu)中。


另外一個(gè)有意思的現(xiàn)象就是PCM的密度,它的容量要比內(nèi)存大2到4倍,而且在空閑功耗,即系統(tǒng)空閑的時(shí)候,這個(gè)功耗是內(nèi)存的1%。因?yàn)閮?nèi)存要不斷地去刷新,維護(hù)內(nèi)存單元里面的數(shù)據(jù),所以這是一個(gè)很耀眼的特性,特別是對(duì)于數(shù)據(jù)中心而言。


  • DBMS的設(shè)計(jì)


我們都知道系統(tǒng)的底層硬件決定著上層軟件的設(shè)計(jì),現(xiàn)在數(shù)據(jù)庫(kù)系統(tǒng)最主要的矛盾是飛速發(fā)展的硬件與始于上世紀(jì)70年代的數(shù)據(jù)庫(kù)系統(tǒng)的陳舊設(shè)計(jì)思想。眾所周知,磁盤(pán)I/O是那個(gè)時(shí)期系統(tǒng)性能的主要瓶頸,而該系統(tǒng)的設(shè)計(jì)者主要考慮的是自己怎樣把這個(gè)系統(tǒng)設(shè)計(jì)得更好,以規(guī)避這個(gè)磁盤(pán)I/O的問(wèn)題。在我們的數(shù)據(jù)庫(kù)系統(tǒng)里面,同樣隨處可見(jiàn)這種設(shè)計(jì)思想。針對(duì)這種磁盤(pán)時(shí)代而提出的算法思想,在大并發(fā)下將會(huì)呈現(xiàn)相當(dāng)嚴(yán)重的性能問(wèn)題。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


這個(gè)研究是在2010年卡內(nèi)基梅隆大學(xué)的數(shù)據(jù)庫(kù)研究小組,對(duì)幾個(gè)開(kāi)源數(shù)據(jù)庫(kù)的性能測(cè)試結(jié)果。可以看到,在多核處理器下這些數(shù)據(jù)庫(kù)系統(tǒng)的性能、擴(kuò)展性都不能夠令人滿意。這篇論文拉開(kāi)了數(shù)據(jù)庫(kù)系統(tǒng)多核優(yōu)化的序幕,特別是開(kāi)源軟件,例如MySQL、PG在該時(shí)期就開(kāi)始重視多核擴(kuò)展性的問(wèn)題,他們意識(shí)到原來(lái)在多核環(huán)境下,系統(tǒng)會(huì)有如此表現(xiàn)。


  • 時(shí)間都去哪兒了呢?


那么,數(shù)據(jù)庫(kù)系統(tǒng)的事務(wù)執(zhí)行時(shí)間都耗費(fèi)到哪去了?下面是麻省理工大學(xué)的研究結(jié)論——數(shù)據(jù)庫(kù)系統(tǒng)大部分的時(shí)間都耗費(fèi)在緩存池管理、日志子系統(tǒng)上,只有12%左右的時(shí)間是耗費(fèi)在真正有用的工作上。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


這些模塊當(dāng)中存在著大量的臨界區(qū),這個(gè)臨界區(qū)設(shè)計(jì)得相當(dāng)粗糙,下面我們可通過(guò)分析一個(gè)代碼片段來(lái)進(jìn)行解析。在系統(tǒng)的設(shè)計(jì)上,經(jīng)常是一把大鎖,不假思索地加上去保護(hù)臨界區(qū),幾百行的代碼。正如剛才看到的,在這種情況下,當(dāng)系統(tǒng)并發(fā)度起來(lái)時(shí),數(shù)據(jù)庫(kù)系統(tǒng)的性能是相當(dāng)差的。


現(xiàn)代處理器下的數(shù)據(jù)庫(kù)技術(shù)

James Gray大家是否聽(tīng)過(guò)呢?在現(xiàn)在數(shù)據(jù)庫(kù)系統(tǒng)里,跟事務(wù)相關(guān)的技術(shù)基本都是James Gray提出來(lái)的。但可惜的是,在2007年,他駕著一艘帆船出海,然后消失了。美國(guó)出動(dòng)了海軍陸戰(zhàn)隊(duì)都沒(méi)有找到他。作為一個(gè)神奇人物,他憑借著對(duì)數(shù)據(jù)庫(kù)事務(wù)的突出貢獻(xiàn)獲得圖靈獎(jiǎng)。


為了克服剛才所謂的內(nèi)存墻技術(shù),James Gray曾說(shuō)過(guò)這么一句話:RAM Locality Is King,就是說(shuō)數(shù)據(jù)和程序行為的局部性才是克服CPU和內(nèi)存的速度不匹配的終極武器。


  • RAM-Locality設(shè)計(jì)原則


數(shù)據(jù)庫(kù)里面主要采用以下幾種技術(shù)優(yōu)化性能,一種是列存儲(chǔ)技術(shù)。列存儲(chǔ)技術(shù),主要用在OLAP,像MySQL、PG等OLTP型數(shù)據(jù)庫(kù)都是用行存儲(chǔ)技術(shù)。為什么要用列存儲(chǔ)技術(shù)呢?是因?yàn)檫M(jìn)行數(shù)據(jù)分析的時(shí)候,經(jīng)常會(huì)出現(xiàn)寬表或有幾百個(gè)字段的表,但通常只需要訪問(wèn)表中的某一些字段,比如要訪問(wèn)銷(xiāo)售字段,對(duì)銷(xiāo)售字段進(jìn)行累加,做一個(gè)聚集操作。采用列存儲(chǔ),可以更好地優(yōu)化高速緩存的使用率,減少cache miss,克服內(nèi)存墻問(wèn)題。


另外就是設(shè)計(jì)高速緩存友好的數(shù)據(jù)結(jié)構(gòu)或算法。像現(xiàn)在的數(shù)據(jù)庫(kù)采用一次一元組的查詢處理方式對(duì)程序局部性很不友好。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


什么叫一次一元組呢?數(shù)據(jù)庫(kù)系統(tǒng)的查詢語(yǔ)句,都是翻譯成操作樹(shù)。在樹(shù)的節(jié)點(diǎn)之間,操作符通過(guò)get_next函數(shù)驅(qū)動(dòng)子節(jié)點(diǎn)獲取一條元組,遞歸調(diào)用下去,葉子節(jié)點(diǎn)將數(shù)據(jù)返回。函數(shù)的頻繁調(diào)用會(huì)產(chǎn)生嚴(yán)重的cache miss問(wèn)題,所以現(xiàn)在新型的OLAP系統(tǒng)都是采用向量化查詢執(zhí)行引擎,上層操作符不再是一條一條數(shù)據(jù)地處理了,而是一批一批數(shù)據(jù)處理,減少函數(shù)調(diào)用的開(kāi)銷(xiāo)和上下文的切換以最大化數(shù)據(jù)和程序指令的局部性。此外,hash join也針對(duì)cache大小將hash table進(jìn)行劃分以增強(qiáng)數(shù)據(jù)與指令的數(shù)據(jù)性減少cache miss。


  • 一個(gè)例子


騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


這是針對(duì)Cache友好而設(shè)計(jì)算法的例子。在PG 9.5之前,系統(tǒng)判斷事務(wù)活躍性或獲取系統(tǒng)快照時(shí),要用到事務(wù)的起始時(shí)間、事務(wù)ID等。這些字段都放在PGPROC這個(gè)結(jié)構(gòu)體里,這個(gè)結(jié)構(gòu)體有25個(gè)成員,但做可見(jiàn)性判斷時(shí),只需要用到幾個(gè)成員就夠了。因此采用這種設(shè)計(jì)系統(tǒng)會(huì)把其它無(wú)關(guān)字段讀入,污染其它c(diǎn)ache line,造成嚴(yán)重的cache miss以及Cache浪費(fèi)問(wèn)題。所以后面他們就把用于可見(jiàn)性判斷等經(jīng)常訪問(wèn)的字段放在另一個(gè)結(jié)構(gòu)體里面叫做PGXACT。打了這個(gè)補(bǔ)丁之后,在大并發(fā)下這個(gè)性能收益是相當(dāng)客觀的,性能數(shù)據(jù)如圖中右上紅色數(shù)據(jù)所示。


因此,針對(duì)Memory  Wall這個(gè)問(wèn)題,設(shè)計(jì)cache友好的數(shù)據(jù)結(jié)構(gòu)與算法是一個(gè)很奏效的方法。


  • 避免熱點(diǎn)與簡(jiǎn)化臨界區(qū)


針對(duì)多核的問(wèn)題,我們還要避免熱點(diǎn)的問(wèn)題,簡(jiǎn)化臨界區(qū)。就像我們經(jīng)??吹降模l(fā)一大,系統(tǒng)性能就掉了下來(lái)。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


這是微軟的內(nèi)存數(shù)據(jù)庫(kù)Hekaton的一個(gè)實(shí)驗(yàn)結(jié)果。截取了事務(wù)在提交時(shí)的一個(gè)時(shí)間戳。這個(gè)全局的原子操作都會(huì)導(dǎo)致這個(gè)性能的問(wèn)題。但針對(duì)MySQL、PG這兩種數(shù)據(jù)庫(kù),性能問(wèn)題還遠(yuǎn)遠(yuǎn)輪不到像類(lèi)似于這種原子操作來(lái)引發(fā)。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


這就是我剛才所提到的問(wèn)題,我們的磁盤(pán)數(shù)據(jù)庫(kù)的設(shè)計(jì)原則是優(yōu)化磁盤(pán)IO。事務(wù)在提交時(shí),不需要刷臟,以避免隨機(jī)IO。我們有一個(gè)專門(mén)的術(shù)語(yǔ),叫做No force,也就是說(shuō)事務(wù)提交時(shí),不用去刷臟頁(yè),但系統(tǒng)會(huì)把日志先刷下去。它這種集中式的設(shè)計(jì),很容易導(dǎo)致性能的問(wèn)題。針對(duì)更新密集型的工作負(fù)載,這個(gè)模塊的性能問(wèn)題更加突出。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


傳統(tǒng)的先寫(xiě)日志的算法(Write-ahead Logging),PG也好、MySQL也好,一般分為三個(gè)步驟,首先獲取一把大鎖,保護(hù)shared  Log  Buffer的這個(gè)數(shù)據(jù)結(jié)構(gòu);然后把日志記錄拷貝到相應(yīng)的日志緩沖區(qū);最后釋放這把鎖。這是最傳統(tǒng)的做法。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


我們現(xiàn)在也跟社區(qū)里面去探討了是否可以廢棄集中式設(shè)計(jì),采用分布式日志的問(wèn)題。就是不采用一個(gè)日志管理器,轉(zhuǎn)而使用多個(gè)Log Buffer同時(shí)把日志序列號(hào)改成邏輯時(shí)間戳。


在PG9.4版本以前,就采用剛才那么一個(gè)粗放的形式,加一把大鎖,然后臨界區(qū)里面進(jìn)行搗鼓,例如長(zhǎng)度計(jì)算、拷貝日志、一些邊界檢查等。這個(gè)臨界區(qū)的代碼大概有300行左右。但后來(lái)他們發(fā)現(xiàn)這個(gè)模塊的性能問(wèn)題實(shí)在太嚴(yán)重了。


解決的方法是把日志文件抽象成線性長(zhǎng)度,寫(xiě)入日志時(shí)把位置預(yù)留出來(lái)。位置確定以后就把鎖放掉,因?yàn)橄到y(tǒng)知道往哪里去寫(xiě)入數(shù)據(jù),根本就不需要把日志拷過(guò)去再放鎖。并且事務(wù)之間可以并行地去拷貝日志。優(yōu)化以后,性能提升了大概20%到30%左右,PG社區(qū)里面有相應(yīng)的測(cè)試報(bào)告。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


他二哥注:更多分布式日志可閱讀另一篇文章《用分布式日志優(yōu)化單機(jī)數(shù)據(jù)庫(kù)系統(tǒng)將成未來(lái)標(biāo)配?》


  • 鎖管理器(鎖申請(qǐng))


另外一種是數(shù)據(jù)庫(kù)里邏輯鎖的問(wèn)題。數(shù)據(jù)庫(kù)里面的加鎖,是通過(guò)一個(gè)哈希表實(shí)現(xiàn)的,表里面的維護(hù)有很多鎖的信息。這個(gè)鎖其實(shí)就是一個(gè)標(biāo)記,例如要加一個(gè)行鎖,就把這個(gè)鎖的Table ID、Row ID拿過(guò)來(lái)作為key,然后哈希到這個(gè)鎖表里。同時(shí)標(biāo)記這個(gè)鎖屬于哪種類(lèi)型,是共享鎖還是排他鎖等。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


但在大并發(fā)或沖突比較嚴(yán)重的情況下,這個(gè)鎖表是會(huì)引發(fā)問(wèn)題的。因?yàn)樗且粋€(gè)共享的數(shù)據(jù)結(jié)構(gòu),很多事務(wù)都要跟鎖表打交道,頻繁地加鎖以及釋放鎖引發(fā)熱點(diǎn)問(wèn)題。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


PG 9.2采用了繼承鎖技術(shù),把共享表級(jí)鎖緩存在本地,然后在事務(wù)之間傳遞,不用把共享表鎖歸還給鎖管理器,減少跟共享的數(shù)據(jù)結(jié)構(gòu)的交互,提高系統(tǒng)的并發(fā)性。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


面向新型存儲(chǔ)的數(shù)據(jù)庫(kù)系統(tǒng)

接下來(lái)我們來(lái)探討一下面向新型存儲(chǔ)的數(shù)據(jù)庫(kù)系統(tǒng)。底層的存儲(chǔ)變了,數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu)各方面肯定都要去改變。


這里我做了一下總結(jié),NVRAM具有的六個(gè)主要特性:一種是可字節(jié)尋址,它的行為模式就相當(dāng)于內(nèi)存,可以字節(jié)尋址,而不再像磁盤(pán)采用Block尋址了,然后是閑時(shí)低功耗、使用壽命長(zhǎng)、非易失性、存儲(chǔ)容量大、快速地隨機(jī)讀寫(xiě)。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


目前而言,NVRAM接入DBMS主要有三種方式,最左邊的是我們傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu),維護(hù)兩個(gè)Buffer,一個(gè)是Log Buffer,另外一個(gè)是Data  Buffer。Log  Buffer是事務(wù)日志集中寫(xiě)入的內(nèi)存區(qū)域;DATA  Buffer用于緩存數(shù)據(jù)頁(yè),事務(wù)訪問(wèn)數(shù)據(jù)時(shí)首先在這個(gè)buffer里面尋找所需的數(shù)據(jù)。MySQL里面的Buffer Pull就是指這個(gè)DATA  Buffer。


第一種接入方式就是我們可以直接把它作為磁盤(pán)的替代直接拿過(guò)來(lái),數(shù)據(jù)庫(kù)系統(tǒng)軟件不需要改動(dòng)。這種方式當(dāng)然是可以獲得收益,因?yàn)榈讓覫/O速度變快了,但沒(méi)有發(fā)揮它最大的收益,軟件的復(fù)雜度還是在那里,不多不少。


第二種是作為日志的存儲(chǔ),現(xiàn)在大家使用的機(jī)器內(nèi)存都很大了,我們的I/O基本上發(fā)生在一個(gè)地方,就是寫(xiě)日志。為了不丟數(shù)據(jù),日志是必須落盤(pán)的。把NVRAM作為日志存儲(chǔ)的設(shè)備,可以用比較小的代價(jià)獲得比較好的收益,第二種接入方式就是把它作為日志存儲(chǔ),而設(shè)計(jì)相應(yīng)的算法與優(yōu)化臨界區(qū)。


第三種方式,是全系統(tǒng)接入的,系統(tǒng)經(jīng)過(guò)全面的改造,把數(shù)據(jù)放在NVRAM。這個(gè)可以跟第二種接入方式對(duì)比一下,系統(tǒng)不再維護(hù)Log  Buffer這個(gè)數(shù)據(jù)結(jié)構(gòu),完全被廢棄掉。


  • write-behind logging


CMU在VLDB 2017剛剛發(fā)表的研究稱之為,write-behind logging,就是NVRAM全系統(tǒng)接入的一種方式。他們的idea是,write-ahead Logging是磁盤(pán)時(shí)代的算法,現(xiàn)在我不用先寫(xiě)日志了。先寫(xiě)日志的問(wèn)題就是數(shù)據(jù)庫(kù)系統(tǒng)宕掉以后,可能需要很長(zhǎng)時(shí)間地去恢復(fù)。它為了避免隨機(jī)IO不將數(shù)據(jù)刷盤(pán),轉(zhuǎn)而順序?qū)懗鋈罩?。系統(tǒng)恢復(fù)時(shí)要先拿到一個(gè)檢查點(diǎn),然后從檢查點(diǎn)開(kāi)始去掃描日志,把日志記錄拿出來(lái),一條條地重放。數(shù)據(jù)量大的時(shí)候,這是相當(dāng)耗時(shí)的一個(gè)工作。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)

他們針對(duì)NVRAM提出一個(gè)新算法稱之為write-behind Logging,就是事務(wù)提交的時(shí)候,直接把臟頁(yè)寫(xiě)入NVRAM(因?yàn)镹VRAM的隨機(jī)IO也是相當(dāng)快的)。臟頁(yè)刷盤(pán)以后,再去寫(xiě)日志。

騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


他們所設(shè)計(jì)的日志記錄是這樣子,不用再去構(gòu)造什么After-image,直接就寫(xiě)上事務(wù)提交的時(shí)間區(qū)間(Cp,Cd)就行了。小于CP這個(gè)時(shí)間點(diǎn)的事務(wù)都已經(jīng)提交了,而落在這個(gè)時(shí)間區(qū)間(Cp,Cd)里面的事務(wù),就是還沒(méi)有提交的。在事務(wù)恢復(fù)的時(shí)候,系統(tǒng)知道這個(gè)時(shí)間區(qū)間的事務(wù)沒(méi)有提交,對(duì)其它事務(wù)不可見(jiàn)。系統(tǒng)沒(méi)有必要去進(jìn)行Redo操作了,因?yàn)閿?shù)據(jù)都已經(jīng)持久化。系統(tǒng)崩潰恢復(fù)時(shí),需要一趟掃描日志,建立崩潰時(shí)候的時(shí)間區(qū)間(檢點(diǎn)可以減少需要掃描的日志量)。建立這個(gè)時(shí)間窗口相當(dāng)于undo操作。


  • TPC-C benchmark


騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


他們對(duì)采用不用算法的系統(tǒng)的恢復(fù)時(shí)間做了一個(gè)比較,可以看到write-behind Logging的恢復(fù)時(shí)間,大概可以達(dá)到即時(shí)恢復(fù)的效果。系統(tǒng)起來(lái),馬上就可以對(duì)外提供服務(wù),但這個(gè)協(xié)議是專門(mén)針對(duì)非易失性內(nèi)存而設(shè)計(jì)的,在這個(gè)磁盤(pán)SSD上,性能比較差。在這個(gè)NVM上,WBL的性能有30%左右的提升。


總結(jié)


  1. 應(yīng)用需求、行業(yè)數(shù)據(jù)以及計(jì)算機(jī)硬件是拉動(dòng)這個(gè)數(shù)據(jù)庫(kù)系統(tǒng)發(fā)展的三駕馬車(chē);

  2. 在這個(gè)多核與內(nèi)存計(jì)算的時(shí)代下,系統(tǒng)設(shè)計(jì)人員更應(yīng)該將精力放在系統(tǒng)的擴(kuò)展性上,更應(yīng)該注重?cái)?shù)據(jù)訪問(wèn)的局部性,克服所謂的內(nèi)存墻問(wèn)題;

  3. 此外,NVM的出現(xiàn)可能會(huì)顛覆系統(tǒng)架構(gòu)。它的出現(xiàn)使得系統(tǒng)設(shè)計(jì)人員可以將注意力完全地從I/O上移除,專注系統(tǒng)擴(kuò)展性設(shè)計(jì)。


狄更斯說(shuō):“這是最壞的時(shí)代,同時(shí)也是最好的時(shí)代”,這個(gè)時(shí)代給了我們挑戰(zhàn),同時(shí)也為數(shù)據(jù)庫(kù)系統(tǒng)從業(yè)人員帶來(lái)了機(jī)遇!


Q&A

【問(wèn)題1】:請(qǐng)教老師,我們是做金融行業(yè)的,想問(wèn)一下目前有哪些場(chǎng)景這一塊會(huì)用得比較多?剛剛聽(tīng)了分享,感覺(jué)這一塊硬件上的性能還是相對(duì)比較好的。

答:現(xiàn)在這個(gè)應(yīng)用的場(chǎng)景,簡(jiǎn)單來(lái)說(shuō)可以提升IO性能,例如用來(lái)存儲(chǔ)日志,可以快速提升系統(tǒng)性能。還有就是在大數(shù)據(jù)分析的場(chǎng)景,用來(lái)提升系統(tǒng)的IO能力。  


【問(wèn)題2】:現(xiàn)在有哪些廠家有提供剛剛講的這一塊?具體有哪些廠商?

答:騰訊現(xiàn)在有在做這一塊的優(yōu)化,英特爾年初推出了相應(yīng)的硬件,這個(gè)硬件我們也拿到了,也在做相關(guān)的優(yōu)化。跟著社區(qū),我們也在做一些交流來(lái)提升系統(tǒng)的擴(kuò)展性的問(wèn)題。

追問(wèn):騰訊在數(shù)據(jù)庫(kù)這邊有支持和服務(wù)?

答:現(xiàn)在我們還沒(méi)有放到云上去,目前在內(nèi)部做一些相應(yīng)的開(kāi)發(fā)。很快就會(huì)在云上推出相關(guān)產(chǎn)品。

追問(wèn):剛才講了很多是PG的,騰訊應(yīng)該也做了一些優(yōu)化,那這方面會(huì)不會(huì)有一些開(kāi)源?

答:有,這都是開(kāi)源的。  

追問(wèn):哪里可以拿到?

答:PG或者M(jìn)ySQL社區(qū)里面,這些優(yōu)化都是會(huì)提交到社區(qū)里面的。

   

【問(wèn)題3】:剛看到老師PPT里有對(duì)TPCC的測(cè)試,因?yàn)楝F(xiàn)在TPCC基本上快被淘汰了,有沒(méi)有去做過(guò)TPCE和TPCDS相關(guān)的測(cè)試呢?

答:這個(gè)你可能有點(diǎn)誤會(huì),因?yàn)檫@兩個(gè)場(chǎng)景是不同的,我們數(shù)據(jù)庫(kù)里面有很多benchmark,比如TPCC、TPCH、TPCDS,他們是針對(duì)不同的場(chǎng)景,有些是針對(duì)OLAP,有些是針對(duì)OLTP。像大家比較熟悉的sysbench,其實(shí)是針對(duì)OLTP去做的,剛才你說(shuō)的那個(gè)就是OLAP的應(yīng)用場(chǎng)景。

追問(wèn):H和DS是對(duì)OLAP性能測(cè)試嗎?C是對(duì)TP的。

答:對(duì),他們的應(yīng)用場(chǎng)景不同。TPCC是衡量一個(gè)事務(wù)型數(shù)據(jù)庫(kù),到底能達(dá)到一個(gè)什么樣性能的標(biāo)準(zhǔn),這個(gè)比較具有說(shuō)服力。



騰訊技術(shù)工程 | 透過(guò)新硬件環(huán)境下的存儲(chǔ)技術(shù),看未來(lái)數(shù)據(jù)庫(kù)系統(tǒng)崛起(附PPT)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI