亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法與流程

文檔序號(hào):11864814閱讀:291來源:國知局
一種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法與流程

本發(fā)明涉及計(jì)算機(jī)軟件領(lǐng)域,具體地,涉及一種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法。



背景技術(shù):

近年來,聯(lián)機(jī)事務(wù)處理(OLTP)在大數(shù)據(jù)環(huán)境中面臨著越來越高的性能要求,要求數(shù)據(jù)庫能夠更高效、更精確,同時(shí)更可靠的處理高并發(fā)事務(wù)。傳統(tǒng)的數(shù)據(jù)庫為了滿足可靠性要求,必須要需要依靠日志寫磁盤來實(shí)現(xiàn)其可靠性。磁盤的速度遠(yuǎn)遠(yuǎn)慢于我們內(nèi)存,就算是固態(tài)硬盤,其速度與內(nèi)存有著數(shù)量級(jí)的差異。傳統(tǒng)數(shù)據(jù)庫多采用了日志來保證書數(shù)據(jù)庫的可靠性,類似Oracle的重做日志(redo log)和撤銷日志(undo log),Mysql中的bin-log。寫數(shù)據(jù)時(shí)頻繁的移動(dòng)磁頭進(jìn)行隨機(jī)寫會(huì)帶來磁盤性能的下降,進(jìn)而影響事務(wù)處理效率。為了避免這種情況,數(shù)據(jù)庫一般不會(huì)直接將更新的數(shù)據(jù)寫入磁盤。數(shù)據(jù)庫先將數(shù)據(jù)放入內(nèi)存的緩沖區(qū)中,然后在磁盤中寫日志,緩存區(qū)到達(dá)一定閾值時(shí)才會(huì)把數(shù)據(jù)刷入磁盤,異常情況下以日志作為恢復(fù)的依據(jù)。這種技術(shù)統(tǒng)稱為預(yù)寫式日志(WAL)。在傳統(tǒng)的硬件架構(gòu)中,為了數(shù)據(jù)庫的可靠性,日志的寫盤是無法避免的。數(shù)據(jù)庫的恢復(fù)依賴于日志,若日志過長,在恢復(fù)時(shí)也將等待較長的時(shí)間。為了減少錯(cuò)誤發(fā)生時(shí)數(shù)據(jù)恢復(fù)的時(shí)間,數(shù)據(jù)庫中將會(huì)建立檢查點(diǎn)。檢查點(diǎn)事件會(huì)將內(nèi)存中緩存的事務(wù)和數(shù)據(jù)刷新到磁盤,并且關(guān)閉舊日志,建立和使用新日志。整庫備份或者數(shù)據(jù)庫空間添加服務(wù)器時(shí)會(huì)觸發(fā)檢查點(diǎn)事件,這類型的檢查點(diǎn)會(huì)阻塞所有事務(wù)。而除此之外觸發(fā)的一般檢查點(diǎn)事件是不會(huì)阻塞事務(wù)的,但是對(duì)于事務(wù)線程是感知的,因?yàn)闄z查點(diǎn)事件即意味著數(shù)據(jù)緩存空間的切換,而檢查點(diǎn)執(zhí)行線程必然需要競(jìng)爭(zhēng)獲得該緩存空間的使用權(quán),并且切需要申請(qǐng)新的緩存區(qū)資源。這里即存在著數(shù)據(jù)庫事務(wù)性能的抖動(dòng)。

綜上所述,本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本申請(qǐng)實(shí)施例中發(fā)明技術(shù)方案的過程中,發(fā)現(xiàn)上述技術(shù)至少存在如下技術(shù)問題:

在現(xiàn)有技術(shù)中,存在傳統(tǒng)數(shù)據(jù)庫中日志寫磁盤降低事務(wù)性能,以及檢查點(diǎn)阻塞事務(wù)或帶來事務(wù)性能抖動(dòng)的技術(shù)問題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供了種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法,解決了傳統(tǒng)數(shù)據(jù)庫中日志寫磁盤降低事務(wù)性能,以及檢查點(diǎn)阻塞事務(wù)或帶來事務(wù)性能抖動(dòng)的技術(shù)問題,實(shí)現(xiàn)了避免了日志文件寫盤帶來的事務(wù)性能下降,提高了數(shù)據(jù)庫系統(tǒng)中事務(wù)吞吐率,同時(shí)避免了建立檢查點(diǎn)對(duì)數(shù)據(jù)庫事務(wù)的阻塞或者帶來性能抖動(dòng),在事務(wù)性能提升的同時(shí)依靠硬件提供可靠性保證的技術(shù)效果。

為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供了一種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法,包括步驟:

A、數(shù)據(jù)庫中有且僅有一個(gè)事務(wù)進(jìn)程,當(dāng)接收到寫入或者修改請(qǐng)求時(shí),寫入內(nèi)存即可返回完成。內(nèi)存由非易失內(nèi)存模塊(Non-Volatile Dual In-line Memory Module,以下統(tǒng)稱為NVDIMM)構(gòu)成,其專有的內(nèi)存分配器提供類似文件系統(tǒng)的名字服務(wù);

B、數(shù)據(jù)庫中有且僅有一個(gè)調(diào)度進(jìn)程,在滿足條件時(shí),它主動(dòng)通知事務(wù)進(jìn)程發(fā)起設(shè)立檢查點(diǎn)的動(dòng)作,而后它會(huì)接受事務(wù)進(jìn)程和檢查點(diǎn)進(jìn)程的報(bào)告,更新系統(tǒng)狀態(tài);

C、事務(wù)進(jìn)程在接收到調(diào)度進(jìn)程通知后,(亦或者自主發(fā)起)建立虛擬存儲(chǔ)快照的操作,然后啟動(dòng)檢查點(diǎn)進(jìn)程,負(fù)責(zé)所有的聯(lián)機(jī)事務(wù)處理過程(Online Transaction Processing,以下均簡(jiǎn)稱OLTP)請(qǐng)求;

D、檢查點(diǎn)進(jìn)程啟動(dòng)后,它將會(huì)依據(jù)虛擬存儲(chǔ)快照,將此刻內(nèi)存中全部更新數(shù)據(jù)以及日志寫入磁盤中,完成任務(wù)通知調(diào)度進(jìn)程,之后該進(jìn)程將自動(dòng)結(jié)束;

其中,內(nèi)存采用NVDIMM,寫入內(nèi)存的數(shù)據(jù)即可視為可靠,更新數(shù)據(jù)存在多版本并發(fā)控制,以保證檢查點(diǎn)能夠獲得一致的數(shù)據(jù)庫數(shù)據(jù)狀態(tài)。采用多版本并發(fā)控制的原因是由于建立檢查點(diǎn)進(jìn)程后,檢查點(diǎn)進(jìn)程中依然會(huì)有事務(wù)線程在進(jìn)行數(shù)據(jù)的更改,檢查點(diǎn)根據(jù)自身獲得的版本號(hào)來決定哪些數(shù)據(jù)是需要將其序列化到磁盤。如若不采用多版本并發(fā)控制,可能存在數(shù)據(jù)的不一致,即檢查點(diǎn)中某些數(shù)據(jù)是某一個(gè)時(shí)刻的狀態(tài),而另一些數(shù)據(jù)是另一個(gè)時(shí)刻的狀態(tài)。

其中,一張具體的數(shù)據(jù)表由多個(gè)分區(qū)組成,相關(guān)信息會(huì)作為元數(shù)據(jù)信息存儲(chǔ)在內(nèi)存中,事務(wù)進(jìn)程將會(huì)產(chǎn)生多個(gè)線程,每一個(gè)線程將會(huì)負(fù)責(zé)一個(gè)分區(qū)的事務(wù)處理,當(dāng)事務(wù)不涉及多個(gè)分區(qū)時(shí),各個(gè)線程之間不需要同步,各自獨(dú)立的完成相關(guān)事務(wù)。當(dāng)事務(wù)涉及多個(gè)分區(qū)時(shí),將會(huì)由一個(gè)唯一的特殊線程來負(fù)責(zé)統(tǒng)籌完成。各個(gè)線程在完成自己分區(qū)事務(wù)后,并行的在內(nèi)存中維護(hù)所轄分區(qū)操作日志??绶謪^(qū)的事務(wù)將由一個(gè)唯一的特殊的線程負(fù)責(zé)記錄日志。采用這樣的設(shè)計(jì)是為了加快事務(wù)的執(zhí)行,尤其是當(dāng)多數(shù)事務(wù)都是單表時(shí),更容易發(fā)揮多核的性能優(yōu)勢(shì)。

其中,事務(wù)進(jìn)程創(chuàng)建虛擬儲(chǔ)器快照。事務(wù)進(jìn)程運(yùn)行在自己虛擬地址空間,而檢查點(diǎn)進(jìn)程啟動(dòng)后處于另外一個(gè)虛擬地址空間。但是在事務(wù)進(jìn)程并未進(jìn)行數(shù)據(jù)修改時(shí),前者的虛擬地址空間和后者的虛擬地址空間中相同的虛擬地址指向完全一致的物理地址,即兩者是完全一致的鏡像。當(dāng)事務(wù)進(jìn)程修改數(shù)據(jù)時(shí),由操作系統(tǒng)和硬件對(duì)該數(shù)據(jù)對(duì)應(yīng)的物理頁進(jìn)行拷貝,該數(shù)據(jù)的虛擬地址將指向新產(chǎn)生的物理頁,并且將更新應(yīng)用于新的物理頁。創(chuàng)建虛擬存儲(chǔ)快照后,事務(wù)進(jìn)程中所有的舊的日志被標(biāo)記刪除,后續(xù)新的操作將記錄在新的日志中,由于虛擬快照的原因,舊的日志將由檢查點(diǎn)進(jìn)程歸檔到硬盤中。與此同時(shí),檢查點(diǎn)進(jìn)程建立后,即可根據(jù)自己建立時(shí)獲得的版本號(hào)開始進(jìn)行數(shù)據(jù)的序列化到磁盤的操作。

在完成對(duì)應(yīng)的檢查點(diǎn)工作之后刪除虛擬存儲(chǔ)器快照。數(shù)據(jù)庫周期性地或者按照自身需求創(chuàng)建新的虛擬存儲(chǔ)器快照來進(jìn)行建立新的檢查點(diǎn)的操作,檢查點(diǎn)的可靠性由NVDIMM保證。

本發(fā)明中的方法,利用硬件、操作系統(tǒng)以及NVDIMM內(nèi)存,實(shí)現(xiàn)了基于虛擬存儲(chǔ)器快照的快速檢查點(diǎn)建立方法。

本發(fā)明中,利用硬件以及操作系統(tǒng)輔助的復(fù)制機(jī)制,來獲得某時(shí)刻完全一致的虛擬存儲(chǔ)器快照。處理器以及相關(guān)硬件針對(duì)虛擬內(nèi)存管理的優(yōu)化(虛擬存儲(chǔ)器地址轉(zhuǎn)換,高速緩存,寫時(shí)拷貝),在我們迅速獲得虛擬存儲(chǔ)器快照中起到關(guān)鍵作用。

NVDIMM是一種可靠的內(nèi)存。在斷電時(shí),NVDIMM可以利用自身的超級(jí)電容將DRAM中的內(nèi)容刷新到非易失內(nèi)存芯片中,它同時(shí)擁有DRAM的速度和非易失存儲(chǔ)介質(zhì)的可靠性。

根據(jù)本發(fā)明的實(shí)施例,放棄傳統(tǒng)數(shù)據(jù)庫系統(tǒng)中通過日志不斷寫盤來保證事務(wù)的可靠性,以期達(dá)到提高事務(wù)處理能力的目的。具體的措施,可以通過NVDIMM本身的可靠性和通過專有內(nèi)存分配器提供的名字服務(wù)來實(shí)現(xiàn)內(nèi)存日志的可靠。換言之,日志存在內(nèi)存中即可視為可靠,事務(wù)可以迅速的提交而不必等待日志同步到磁盤中。當(dāng)檢查點(diǎn)事件觸發(fā)時(shí),日志會(huì)通過虛擬存儲(chǔ)器快照由檢查點(diǎn)進(jìn)程批量的寫入磁盤,而后標(biāo)記刪除舊日志。日志在內(nèi)存中的數(shù)量超過一定的閾值時(shí)會(huì)觸發(fā)檢查點(diǎn)事件,從而保證在整個(gè)數(shù)據(jù)庫運(yùn)行過程中,日志不會(huì)持續(xù)的占有大量的內(nèi)存。日志寫磁盤的方式采用的是高效的批量寫,充分利用磁盤順序?qū)懜痈咝У奶攸c(diǎn)。

根據(jù)本發(fā)明,利用虛擬存儲(chǔ)器快照實(shí)現(xiàn)了無阻塞檢查點(diǎn)的快速建立,事務(wù)線程對(duì)于檢查點(diǎn)事件完全是無感知的。檢查點(diǎn)進(jìn)程除了將舊日志刷盤外,還會(huì)將內(nèi)存中的檢查點(diǎn)事件產(chǎn)生之前已經(jīng)提交事務(wù)的數(shù)據(jù)逐個(gè)刷盤,為了保證一致性,要求數(shù)據(jù)存在版本控制。

本申請(qǐng)實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):

本發(fā)明提出了一種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法。在本發(fā)明模型中,避免了日志文件寫盤帶來的事務(wù)性能下降,提高了數(shù)據(jù)庫系統(tǒng)中事務(wù)吞吐率,同時(shí)避免了建立檢查點(diǎn)對(duì)數(shù)據(jù)庫事務(wù)的阻塞或者帶來性能抖動(dòng),在事務(wù)性能提升的同時(shí)依靠硬件提供可靠性保證。

附圖說明

此處所說明的附圖用來提供對(duì)本發(fā)明實(shí)施例的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,并不構(gòu)成對(duì)本發(fā)明實(shí)施例的限定;

圖1為剛啟動(dòng)檢查點(diǎn)進(jìn)程時(shí)虛擬內(nèi)存與物理內(nèi)存示意圖;

圖2為事務(wù)進(jìn)程更新數(shù)據(jù)的同時(shí),檢查點(diǎn)進(jìn)程將日志和數(shù)據(jù)刷入磁盤中示意圖;

圖3為實(shí)施例中的調(diào)度進(jìn)程、檢查點(diǎn)進(jìn)程、事務(wù)進(jìn)程模型示意圖。

具體實(shí)施方式

本發(fā)明提供了種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法,解決了傳統(tǒng)數(shù)據(jù)庫中日志寫磁盤降低事務(wù)性能,以及檢查點(diǎn)阻塞事務(wù)或帶來事務(wù)性能抖動(dòng)的技術(shù)問題,實(shí)現(xiàn)了避免了日志文件寫盤帶來的事務(wù)性能下降,提高了數(shù)據(jù)庫系統(tǒng)中事務(wù)吞吐率,同時(shí)避免了建立檢查點(diǎn)對(duì)數(shù)據(jù)庫事務(wù)的阻塞或者帶來性能抖動(dòng),在事務(wù)性能提升的同時(shí)依靠硬件提供可靠性保證的技術(shù)效果。

為了更好的理解上述技術(shù)方案,下面將結(jié)合說明書附圖以及具體的實(shí)施方式對(duì)上述技術(shù)方案進(jìn)行詳細(xì)的說明。

下面結(jié)合具體實(shí)施例及附圖,對(duì)本發(fā)明作進(jìn)一步地的詳細(xì)說明,但本發(fā)明的實(shí)施方式不限于此。

實(shí)施例一:

請(qǐng)參考圖1-圖3,基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法如下:

初始化系統(tǒng),數(shù)據(jù)庫啟動(dòng),調(diào)度進(jìn)程,事務(wù)進(jìn)程先后被建立,事務(wù)進(jìn)程和調(diào)度進(jìn)程通過共享內(nèi)存進(jìn)行通信。事務(wù)進(jìn)程的一種實(shí)施例如圖3。事務(wù)進(jìn)程根據(jù)配置文件以及數(shù)據(jù)庫的元數(shù)據(jù),決定啟動(dòng)的事務(wù)線程的數(shù)量,以及每個(gè)事務(wù)線程所服務(wù)的數(shù)據(jù)分區(qū)特征。例如,分區(qū)采用取模的方式獲得。假設(shè)以4為模,某數(shù)據(jù)庫的一張表表含有100行數(shù)據(jù),那么該表的前面25個(gè)元祖由一個(gè)事務(wù)線程維護(hù),之后的25個(gè)元祖由另外一個(gè)元祖維護(hù),以此類推。只涉及一個(gè)分區(qū)的事務(wù),事務(wù)線程完全不需要同步,分區(qū)將獨(dú)立的建立日志,更新的數(shù)據(jù)緩沖區(qū)也是線程專屬,不需要與其他線程競(jìng)爭(zhēng)。日志和數(shù)據(jù)的更新方式與傳統(tǒng)數(shù)據(jù)庫一樣,先在內(nèi)存日志中寫日志,然后再更新數(shù)據(jù)緩沖區(qū)。事務(wù)提交時(shí)要求數(shù)據(jù)緩沖區(qū)中打上時(shí)間戳,以用于檢查點(diǎn)建立時(shí)區(qū)分是否需要寫日磁盤。

當(dāng)檢查點(diǎn)事件被觸發(fā)時(shí),調(diào)度進(jìn)程將會(huì)通知事務(wù)進(jìn)程。事務(wù)進(jìn)程中會(huì)有專門的檢查點(diǎn)數(shù)據(jù)結(jié)構(gòu),用于標(biāo)識(shí)檢查點(diǎn)的版本號(hào),該版本檢查點(diǎn)的時(shí)間戳,以及該版本檢查點(diǎn)的目前的狀態(tài)(執(zhí)行中,完成,失?。?。事務(wù)進(jìn)程中亦有專門負(fù)責(zé)調(diào)度的線程,接收到調(diào)度進(jìn)程建立檢查點(diǎn)的命令之后,會(huì)首先更新自己的檢查點(diǎn)版本號(hào)、時(shí)間戳、標(biāo)記其狀態(tài)位為執(zhí)行中,然后會(huì)調(diào)用系統(tǒng)接口,創(chuàng)建虛擬存儲(chǔ)快照。例如,以linux操作系統(tǒng)為例,調(diào)用fork系統(tǒng)調(diào)用,即可創(chuàng)建虛擬存儲(chǔ)快照。如圖1所示,當(dāng)fork調(diào)用剛完成的一瞬間,檢查點(diǎn)進(jìn)程和事務(wù)進(jìn)程的虛擬存儲(chǔ)器對(duì)應(yīng)的物理頁面完全是一模一樣的。如圖2所示,當(dāng)事務(wù)進(jìn)程更新了自己的數(shù)據(jù)之后,會(huì)觸發(fā)copy-on-update機(jī)制,這時(shí)候事務(wù)進(jìn)程虛擬地址空間對(duì)應(yīng)的物理頁面發(fā)生了變化——會(huì)將原本的物理頁拷貝一份,將新的數(shù)據(jù)內(nèi)容拷貝一份到新的物理頁。因?yàn)閒ork調(diào)用會(huì)將正在執(zhí)行事務(wù)的線程同樣的拷貝,所以如果數(shù)據(jù)不存在版本控制,檢查點(diǎn)寫入的數(shù)據(jù)可能并不是建立檢查點(diǎn)事件時(shí)真正的數(shù)據(jù)。為了保證檢查點(diǎn)的一致性,要求數(shù)據(jù)要有版本控制而日志要求打上時(shí)間戳。檢查點(diǎn)進(jìn)程會(huì)通過快照中的檢查點(diǎn)版本號(hào)和時(shí)間戳來決定哪些數(shù)據(jù)和日志是需要此次寫入磁盤。在日志的處理上,各個(gè)日志文件單獨(dú)的寫入各自的文件。檢查點(diǎn)進(jìn)程完成任務(wù)后,會(huì)通知事務(wù)進(jìn)程檢查點(diǎn)完成,之后的事務(wù)中該檢查點(diǎn)時(shí)間戳之前的日志和數(shù)據(jù)所占內(nèi)存空間即可回收或重新利用。

上述本申請(qǐng)實(shí)施例中的技術(shù)方案,至少具有如下的技術(shù)效果或優(yōu)點(diǎn):

本發(fā)明提出了一種基于虛擬存儲(chǔ)器快照的數(shù)據(jù)庫檢查點(diǎn)構(gòu)建方法,在本發(fā)明模型中,避免了日志文件寫盤帶來的事務(wù)性能下降,提高了數(shù)據(jù)庫系統(tǒng)中事務(wù)吞吐率,同時(shí)避免了建立檢查點(diǎn)對(duì)數(shù)據(jù)庫事務(wù)的阻塞或者帶來性能抖動(dòng),在事務(wù)性能提升的同時(shí)依靠硬件提供可靠性保證。

盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。

顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1