新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 內(nèi)存數(shù)據(jù)庫系統(tǒng),NVDIMM和數(shù)據(jù)持久性

內(nèi)存數(shù)據(jù)庫系統(tǒng),NVDIMM和數(shù)據(jù)持久性

作者: 時(shí)間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

測(cè)試應(yīng)用程序執(zhí)行5次操作,每次循環(huán)構(gòu)成一個(gè)事務(wù),并包含至少兩個(gè)操作實(shí)例(見圖2)?;鶞?zhǔn)應(yīng)用程序記錄在兩種類型中的每一個(gè)(磁盤上的數(shù)據(jù)庫管理系統(tǒng)和帶事務(wù)日志的內(nèi)存數(shù)據(jù)庫系統(tǒng),或“IMDS+TL”)和兩種內(nèi)存(和傳統(tǒng)DRAM)情況下每毫秒完成的循環(huán)次數(shù)。測(cè)試應(yīng)用程序使用了eXtremeDB自己的C/C++應(yīng)用編程接口(API)。

圖2:測(cè)試應(yīng)用程序操作。

支持?jǐn)?shù)據(jù)庫恢復(fù)的測(cè)試應(yīng)用程序代碼可以充分利用eXtremeDB功能,而這種功能原本是增加來用于支持電池供電型RAM作為存儲(chǔ)器。這種功能可以在系統(tǒng)重啟后重新連接到NVRAM管理的eXtremeDB數(shù)據(jù)庫,啟動(dòng)任何必需的清零工作,然后恢復(fù)正常工作。應(yīng)用程序的恢復(fù)算法假設(shè)分配作為MCO_MEMORY_ASSIGN_DATABASE的數(shù)據(jù)庫內(nèi)存器件的內(nèi)存塊可以在應(yīng)用程序崩潰或電源故障之后重新使用,方法是用另外的標(biāo)志MCO_DB_OPEN_EXISTING重新打開它。

基準(zhǔn)測(cè)試結(jié)果

從故障恢復(fù)是通過重啟測(cè)試系統(tǒng)中間執(zhí)行程序進(jìn)行測(cè)試的。當(dāng)系統(tǒng)恢復(fù)后,測(cè)試程序自動(dòng)重新啟動(dòng),訪問前故障狀態(tài)的eXtremeDB數(shù)據(jù)庫(在恢復(fù)時(shí),已經(jīng)將數(shù)據(jù)庫從閃存加載到DRAM),檢查數(shù)據(jù)庫的一致性并恢復(fù)操作,并從與系統(tǒng)重啟之前使用的相同存儲(chǔ)空間訪問數(shù)據(jù)庫。

在比較將NVDIMM用作主內(nèi)存的“pure”內(nèi)存數(shù)據(jù)庫系統(tǒng)(沒有事務(wù)日志)和使用傳統(tǒng)DRAM的相同數(shù)據(jù)庫配置下速度的測(cè)試中,兩種存儲(chǔ)類型之間的任何差距都是可以忽略的。待測(cè)所有數(shù)據(jù)庫操作--插入、更新、刪除、索引搜索和表格遍歷--的性能差異都在所用測(cè)量技術(shù)的誤差范圍之內(nèi)。有人可能將這種等效性歸因于加載進(jìn)CPU緩存的完整數(shù)據(jù)庫,以及在那里發(fā)生而不是在DRAM或NVDIMM那里發(fā)生的數(shù)據(jù)訪問。然而,接近12MB的測(cè)試數(shù)據(jù)庫尺寸大大超過5MB的CPU緩存大小,測(cè)試應(yīng)用程序則依靠隨機(jī)密鑰從數(shù)據(jù)庫中尋找隨機(jī)頁。

剩余測(cè)試專注于事務(wù)日志對(duì)內(nèi)存數(shù)據(jù)庫系統(tǒng)性能的影響。內(nèi)存數(shù)據(jù)庫供應(yīng)商提供事務(wù)日志來減輕“pure”內(nèi)存數(shù)據(jù)存儲(chǔ)的易失性。然而,事務(wù)日志要求永久存儲(chǔ)(進(jìn)行記錄),這會(huì)影響到內(nèi)存數(shù)據(jù)庫系統(tǒng)的性能。正是出于這個(gè)理由,內(nèi)存數(shù)據(jù)庫系統(tǒng)供應(yīng)商經(jīng)常被問到,他們的產(chǎn)品性能在采用事務(wù)日志部署時(shí)是否仍然超過磁盤上的數(shù)據(jù)庫管理系統(tǒng)。

上述測(cè)試力求回答這個(gè)問題。用于永久存儲(chǔ)的“硬盤”實(shí)際上是一個(gè)將NVDIMM用作內(nèi)存的RAM盤(基于內(nèi)存的磁盤類存儲(chǔ)器)。這種做法一方面是想進(jìn)一步測(cè)試AgigA Tech公司的產(chǎn)品(也就是說,為了確認(rèn)它是否能創(chuàng)建RAM盤,并有一個(gè)數(shù)據(jù)庫系統(tǒng)能與它交互),另一方面也是想證明采用事務(wù)日志的內(nèi)存數(shù)據(jù)庫系統(tǒng)性能為何能夠超過磁盤上的數(shù)據(jù)庫管理系統(tǒng)。

除了它們使用的存儲(chǔ)器件(磁盤上的數(shù)據(jù)庫管理系統(tǒng)用的是硬盤或固態(tài)硬盤,內(nèi)存數(shù)據(jù)庫系統(tǒng)用的是DRAM)外,內(nèi)存數(shù)據(jù)庫系統(tǒng)與磁盤上的數(shù)據(jù)庫管理系統(tǒng)還有很重要的區(qū)別。內(nèi)存數(shù)據(jù)庫系統(tǒng)取消了緩沖管理、文件I/O和傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)架構(gòu)中固有的其它開銷源。取消硬盤--代之以RAM盤--可以消除因存儲(chǔ)器件的物理操作引起的開銷,從而突出內(nèi)存數(shù)據(jù)庫系統(tǒng)的流線型設(shè)計(jì)的延時(shí)效應(yīng),它比磁盤上的數(shù)據(jù)庫管理系統(tǒng)更為復(fù)雜的處理強(qiáng)得多。

測(cè)試表明,對(duì)于插入、更新和刪除操作來說,采用事務(wù)日志的內(nèi)存數(shù)據(jù)庫系統(tǒng)性能明顯超過傳統(tǒng)磁盤上的數(shù)據(jù)庫管理系統(tǒng)(同樣,兩者都使用RAM作為它們的“永久”存儲(chǔ))。圖3顯示了每種配置條件下單位為循環(huán)/毫秒的結(jié)果,以及通過IMDS+TL所表現(xiàn)出來的性能翻倍。舉例來說,在數(shù)據(jù)庫刪除測(cè)試中,IMDS+TL要比磁盤上的數(shù)據(jù)庫管理系統(tǒng)快12.77倍。圖3還顯示了關(guān)閉事務(wù)日志、讓eXtremeDB作為將NVDIMM用作主存的“pure”IMDS進(jìn)行操作的性能影響。

圖3:結(jié)果。

數(shù)據(jù)庫索引搜索和表格遍歷表明,在從磁盤上的數(shù)據(jù)庫管理系統(tǒng)轉(zhuǎn)移到IMDS+TL時(shí),幾乎沒有性能上的變化。這種結(jié)果是在預(yù)料之中的,因?yàn)榕c插入、更新和刪除操作相比,這種數(shù)據(jù)庫“讀取”操作不會(huì)改變數(shù)據(jù)庫內(nèi)容,在性能方面的成本通常低得多。

討論

NVDIMM在用作內(nèi)存數(shù)據(jù)庫系統(tǒng)存儲(chǔ)器時(shí)可以匹配傳統(tǒng)DRAM的速度,同時(shí)提供完整的內(nèi)存數(shù)據(jù)庫持久性。那么為什么還有人要用帶延時(shí)誘導(dǎo)事務(wù)日志的內(nèi)存數(shù)據(jù)庫系統(tǒng)呢?這里有多種理由,包括成本,因?yàn)镚B規(guī)模的NVDIMM成本要大于DRAM;想要使用非Intel Romley和Grantley的平臺(tái);要求的數(shù)據(jù)庫大小(AgigA Tech公司的NVDIMM支持高達(dá)128GB的總內(nèi)存容量)。如上述數(shù)字所示,增加事務(wù)日志實(shí)現(xiàn)數(shù)據(jù)持久性將降低內(nèi)存數(shù)據(jù)庫系統(tǒng)的性能,但I(xiàn)MDS+TL組合在插入、更新和刪除操作時(shí)仍能超越傳統(tǒng)磁盤型數(shù)據(jù)庫管理系統(tǒng)的性能。

今后用戶會(huì)遇到的另外一個(gè)問題是他們所選的內(nèi)存數(shù)據(jù)庫系統(tǒng)是否支持將NVDIMM用作主要內(nèi)存。如前所述,McObject的eXtremeDB內(nèi)存數(shù)據(jù)庫系統(tǒng)包括許多功能--在產(chǎn)品開發(fā)早期就加入的,用于支持與電池供電型RAM的交互--這些功能可以用NVDIMM平順地恢復(fù)數(shù)據(jù)庫。使用沒有這些功能的內(nèi)存數(shù)據(jù)庫系統(tǒng)可能導(dǎo)致更高的復(fù)雜性,并且在實(shí)現(xiàn)可工作的解決方案之前需要很大的開發(fā)和測(cè)試工作量。

另外值得注意的是,本文討論的數(shù)據(jù)庫持久性--也就是確保數(shù)據(jù)庫和所有提交的事務(wù)能在發(fā)生系統(tǒng)故障事件時(shí)得到恢復(fù)--有別于高可用性,或不停工操作的能力。雖然兩種技術(shù)都是想幫助數(shù)據(jù)庫經(jīng)受住故障,但如前所述,高可用性通常是通過復(fù)制實(shí)現(xiàn)的,故障轉(zhuǎn)移時(shí)間單位是毫秒。相反,持久性--帶事務(wù)日志的內(nèi)存數(shù)據(jù)庫系統(tǒng)或?qū)VDIMM用作主存所能達(dá)到的--不保證消除停工時(shí)間。使用NVDIMM或事務(wù)日志進(jìn)行數(shù)據(jù)庫恢復(fù)通常是自動(dòng)的,但兩者最有可能的使用場(chǎng)景是在意外的系統(tǒng)宕機(jī)之后,這意味著冷重啟(如重新啟動(dòng))這樣的時(shí)長(zhǎng)為分鐘級(jí)的過程。開發(fā)人員在考慮用這些技術(shù)克服易失性問題時(shí)應(yīng)該理解數(shù)據(jù)庫高可用性和持久性之間的區(qū)別。



關(guān)鍵詞: 數(shù)據(jù)庫 NVDIMM

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉