基于htm和nvram的內(nèi)存事務性計算的持久性方法
【技術(shù)領域】
[0001 ]本發(fā)明涉及內(nèi)存數(shù)據(jù)庫事務處理領域,具體地,涉及一種基于HTM和NVRAM的內(nèi)存事務性計算的持久性方法。
【背景技術(shù)】
[0002]數(shù)據(jù)庫事務的持久性是數(shù)據(jù)庫系統(tǒng)的重要特征,直接關(guān)系到用戶的數(shù)據(jù)是否會丟失?,F(xiàn)有的解決方案主要為將數(shù)據(jù)寫到磁盤中再提交事務。這樣所帶來的問題是由于磁盤讀寫具有較高的延遲,這樣會顯著的增加內(nèi)存事務計算的延遲。
[0003]硬件事務性內(nèi)存HTM(Hardware transact1nal memory)是事務性內(nèi)存計算技術(shù),提供了程序執(zhí)行的原子性和隔離性。并且HTM非常高效的實現(xiàn)了這些特性。然而HTM并沒有提供持久性的支持。
[0004]持久性內(nèi)存NVRAM(Non-volatile RAM)為一種新的內(nèi)存技術(shù),有多種實現(xiàn),其都保證如果數(shù)據(jù)被寫到該內(nèi)存中則可確保數(shù)據(jù)的持久性。由于NVRAM的讀寫的延遲和傳統(tǒng)內(nèi)存具有相當?shù)难舆t,同時比寫磁盤要快許多。
[0005]盡管HTM可以非常高效的執(zhí)行,然而其工作集合有限制,因此在HTM的執(zhí)行中無法訪問過多的內(nèi)存。同時,由于NVRAM的大小也有限制,因此如何有效的咋HTM中利用NVRAM來記錄事務的修改存在著挑戰(zhàn)。由于數(shù)據(jù)庫持久性要求數(shù)據(jù)最終會被儲存在磁盤中,因此仍需要有效的方法將NVRAM記錄的日志最終寫回到磁盤中。
[0006]目前,現(xiàn)有的HTM系統(tǒng)通常采用批處理來定期的將事務的修改寫到磁盤中來降低磁盤的開銷,這樣會帶來非常高的延遲。而使用NVRAM的數(shù)據(jù)庫系統(tǒng)并沒有使用HTM來支持數(shù)據(jù)庫事務的隔離性和原子性,這樣相比HTM系統(tǒng)吞吐量并不高。因此如何針對HTM,結(jié)合NVRAM,合理設計內(nèi)存數(shù)據(jù)庫事務持久化方法,減少事務執(zhí)行的延遲,高效的實現(xiàn)內(nèi)存數(shù)據(jù)庫事務的持久性實已成為本領域技術(shù)人員亟待解決的技術(shù)難題。
【發(fā)明內(nèi)容】
[0007]針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于HTM和NVRAM的內(nèi)存事務性計算的持久性方法。
[0008]根據(jù)本發(fā)明提供的基于HTM和NVRAM的內(nèi)存事務性計算的持久性方法,包括如下步驟:
[0009]步驟1:分配NVRAM,并用分配的NVRAM記錄HTM執(zhí)行的事務中修改的數(shù)據(jù);
[0010]步驟2:檢查是否需要清理NVRAM,若需要清理,則將該NVRAM的數(shù)據(jù)寫回到磁盤。
[0011]優(yōu)選地,所述步驟I包括:
[0012]步驟1.1:在事務開始前,預先分配NVRAM用來記錄事務需要修改的內(nèi)存數(shù)據(jù);
[0013]若NVRAM不夠時,等待清理程序告知有足夠的NVRAM后再進行分配;當NVRAM分配完成后標記所用的NVRAM為:不可分配;
[0014]步驟1.2:事務在進入HTM執(zhí)行時,當對某些數(shù)據(jù)進行修改后,將數(shù)據(jù)的版本號加一,并將數(shù)據(jù)的版本號和修改后的值記錄到預先分配的NVRAM中。
[0015]優(yōu)選地,所述步驟2包括:
[0016]步驟2.1:清理程序定期查看是否有足夠的NVRAM可進行分配,若發(fā)現(xiàn)沒有足夠的NVRAM,則將部分標為不可分配的NVRAM的數(shù)據(jù)寫回到磁盤中,并將這些NVRAM標記為可用;
[0017]步驟2.2:清理程序告知所有等待分配NVRAM的事務開始分配。
[0018]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
[0019]1、本發(fā)明中的方法利用NVRAM和HTM的使用較低的延遲來實現(xiàn)數(shù)據(jù)庫事務持久性,本方法通過在HTM中把數(shù)據(jù)記錄在NVRAM中,使得在NVRAM中的數(shù)據(jù)即是已經(jīng)提交的數(shù)據(jù),這樣就不需要額外的協(xié)議來檢查NVRAM的數(shù)據(jù)是否已經(jīng)提交,同時不會給事務執(zhí)行帶來額外的延遲,也不需要等待數(shù)據(jù)被寫回到磁盤中再提交事務,從而大大降低事務執(zhí)行的延遲。
[0020]2、本發(fā)明利用可以直接支持使用HTM的內(nèi)存數(shù)據(jù)庫系統(tǒng),最大程度的利用硬件所提供的性能優(yōu)勢,這樣帶來的高效的內(nèi)存數(shù)據(jù)庫系統(tǒng)具有高吞吐量和低延遲,數(shù)據(jù)庫的整體性能非常好同時還會提升用戶的體驗。
【附圖說明】
[0021]通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
[0022]圖1為本發(fā)明中基于HTM和NVRAM的內(nèi)存事務持久性方法的邏輯流程圖;
[0023]圖2為本發(fā)明中基于HTM和NVRAM的內(nèi)存事務持久性方法的NVRAM內(nèi)存分配和回收機制原理圖。
【具體實施方式】
[0024]下面結(jié)合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領域的技術(shù)人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應當指出的是,對本領域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進。這些都屬于本發(fā)明的保護范圍。
[0025]本發(fā)明采用HTM和NVRAM的硬件技術(shù),實現(xiàn)數(shù)據(jù)庫事務系統(tǒng)的持久性。
[0026]具體地,如圖1所示,圖1為基于HTM和NVRAM的內(nèi)存事務持久性方法的邏輯流程圖。
[0027]步驟S1:事務查看是否有足夠的NVRAM來進行分配,如果有則標記需要的NVRAM為不可分配;若沒有足夠的NVRAM,則等待足夠的NVRAM被標記為可用后再重新進行分配。
[0028]步驟S2:事務在使用HTM執(zhí)行事務時,如果需要對某個數(shù)據(jù)進行修改,則將這個數(shù)據(jù)的版本號加I,并且將這個數(shù)據(jù)的新版本號和新的數(shù)據(jù)記錄到步驟SI分配的NVRAM中。
[0029]步驟S3:清理程序定期檢查是否有NVRAM被標記為需要清理,若有則將該NVRAM中的數(shù)據(jù)寫回到磁盤中,隨后再將這塊NVRAM標記為可分配,并且通知等待分配的事務開始分配NVRAM0
[0030]進一步具體的,NVRAM的分配和清理算法如圖2所示,所有的NVRAM被分為兩個大塊,其中每個大塊又有許多個小段NVRAM可供分配。其中有一個NVRAM作為當前使用的NVRAM。在步驟SI中每個要執(zhí)行的事務通過檢查當前使用的NVRAM中是否有足夠多的小塊內(nèi)存來記錄程序?qū)⒁M行的修改的數(shù)據(jù)(圖2的白色塊),如果有則直接將這些小塊標記為:不可用(圖2的黑色塊),并開始執(zhí)行事務。如果沒有則將該大塊內(nèi)存標記為需要清理(圖2箭頭),同時將當前使用的NVRAM切換為另一個NVRAM大塊。如果此時當前使用的NVRAM的標記仍為需要清理,則等待其變?yōu)榭煞峙?。否則在新的當前NVRAM中進行分配NVRAM,并將分配后的NVRAM標記為:不可分配。
[0031]清理程序會定期檢查當前是否有大塊的標記為需要清理。如果有則將其中的數(shù)據(jù)寫到磁盤中,當寫磁盤操作完成后再將清理的大塊標記為可分配。一次清理工作便完成。
[0032]綜上所述,本發(fā)明提出的基于HTM和NVRAM的內(nèi)存事務持久性方法,能夠不用等到事務修改的數(shù)據(jù)被寫到磁盤中便可以保證事務的持久性,進而可以更早的提交事務,大大降低內(nèi)存事務執(zhí)行的延遲。從而提高內(nèi)存數(shù)據(jù)庫事務系統(tǒng)的整體性能和用戶體驗。
[0033]以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。
【主權(quán)項】
1.一種基于HTM和NVRAM的內(nèi)存事務性計算的持久性方法,其特征在于,包括如下步驟: 步驟1:分配NVRAM,并用分配的NVRAM記錄HTM執(zhí)行的事務中修改的數(shù)據(jù); 步驟2:檢查是否需要清理NVRAM,若需要清理,則將該NVRAM的數(shù)據(jù)寫回到磁盤。2.根據(jù)權(quán)利要求1所述的基于HTM和NVRAM的內(nèi)存事務性計算的持久性方法,其特征在于,所述步驟I包括: 步驟1.1:在事務開始前,預先分配NVRAM用來記錄事務需要修改的內(nèi)存數(shù)據(jù); 若NVRAM不夠,則等待清理程序告知有足夠的NVRAM后再進行分配;當NVRAM分配完成后標記所用的NVRAM為:不可分配; 步驟1.2:事務在進入HTM執(zhí)行時,當對某些數(shù)據(jù)進行修改后,將數(shù)據(jù)的版本號加一,并將數(shù)據(jù)的版本號和修改后的值記錄到預先分配的NVRAM中。3.根據(jù)權(quán)利要求1所述的基于HTM和NVRAM的內(nèi)存事務性計算的持久性方法,其特征在于,所述步驟2包括: 步驟2.1:清理程序定期查看是否有足夠的NVRAM可進行分配,若發(fā)現(xiàn)沒有足夠的NVRAM,則將部分標記為不可分配的NVRAM的數(shù)據(jù)寫回到磁盤中,并將這些NVRAM標記為:可分配; 步驟2.2:清理程序告知所有等待分配NVRAM的事務開始分配。
【專利摘要】本發(fā)明提供了一種基于HTM和NVRAM的內(nèi)存事務性計算的持久性方法,包括:步驟1:分配NVRAM,并用分配的NVRAM記錄HTM執(zhí)行的事務中修改的數(shù)據(jù);步驟2:檢查是否需要清理NVRAM,若需要清理,則將該NVRAM的數(shù)據(jù)寫回到磁盤。本發(fā)明利用NVRAM和HTM的特性,使得事務性的程序不需要將數(shù)據(jù)記錄到磁盤即可以返回,這樣可以低延遲的實現(xiàn)內(nèi)存事務計算的持久性。本發(fā)明能夠顯著降低數(shù)據(jù)庫系統(tǒng)事務執(zhí)行的延遲,提升數(shù)據(jù)庫系統(tǒng)的資源利用率以及應用服務的性能。
【IPC分類】G06F17/30
【公開號】CN105512342
【申請?zhí)枴緾N201610005809
【發(fā)明人】陳海波, 陳榕, 臧斌宇, 魏星達
【申請人】上海交通大學
【公開日】2016年4月20日
【申請日】2016年1月5日