本發明專利技術公開了一種基于虛擬存儲器快照的數據庫檢查點構建方法,所述方法包括:數據庫中僅有一個事務進程,當接收到寫入或者修改請求時,寫入內存即可返回完成;數據庫中僅有一個調度進程,在滿足條件時,調度進程主動通知事務進程發起設立檢查點的動作,而后調度進程接受事務進程和檢查點進程的報告,更新系統狀態;事務進程在接收到調度進程通知后,建立虛擬存儲快照的操作,然后啟動檢查點進程;檢查點進程啟動后,檢查點依據虛擬存儲快照,將此刻內存中全部更新數據以及日志寫入磁盤中,實現了提高了數據庫系統中事務吞吐率,避免了建立檢查點對數據庫事務的阻塞或者帶來性能抖動的技術效果。
【技術實現步驟摘要】
本專利技術涉及計算機軟件領域,具體地,涉及一種基于虛擬存儲器快照的數據庫檢查點構建方法。
技術介紹
近年來,聯機事務處理(OLTP)在大數據環境中面臨著越來越高的性能要求,要求數據庫能夠更高效、更精確,同時更可靠的處理高并發事務。傳統的數據庫為了滿足可靠性要求,必須要需要依靠日志寫磁盤來實現其可靠性。磁盤的速度遠遠慢于我們內存,就算是固態硬盤,其速度與內存有著數量級的差異。傳統數據庫多采用了日志來保證書數據庫的可靠性,類似Oracle的重做日志(redo log)和撤銷日志(undo log),Mysql中的bin-log。寫數據時頻繁的移動磁頭進行隨機寫會帶來磁盤性能的下降,進而影響事務處理效率。為了避免這種情況,數據庫一般不會直接將更新的數據寫入磁盤。數據庫先將數據放入內存的緩沖區中,然后在磁盤中寫日志,緩存區到達一定閾值時才會把數據刷入磁盤,異常情況下以日志作為恢復的依據。這種技術統稱為預寫式日志(WAL)。在傳統的硬件架構中,為了數據庫的可靠性,日志的寫盤是無法避免的。數據庫的恢復依賴于日志,若日志過長,在恢復時也將等待較長的時間。為了減少錯誤發生時數據恢復的時間,數據庫中將會建立檢查點。檢查點事件會將內存中緩存的事務和數據刷新到磁盤,并且關閉舊日志,建立和使用新日志。整庫備份或者數據庫空間添加服務器時會觸發檢查點事件,這類型的檢查點會阻塞所有事務。而除此之外觸發的一般檢查點事件是不會阻塞事務的,但是對于事務線程是感知的,因為檢查點事件即意味著數據緩存空間的切換,而檢查點執行線程必然需要競爭獲得該緩存空間的使用權,并且切需要申請新的緩存區資源。這里即存在著數據庫事務性能的抖動。綜上所述,本申請專利技術人在實現本申請實施例中專利技術技術方案的過程中,發現上述技術至少存在如下技術問題:在現有技術中,存在傳統數據庫中日志寫磁盤降低事務性能,以及檢查點阻塞事務或帶來事務性能抖動的技術問題。
技術實現思路
本專利技術提供了種基于虛擬存儲器快照的數據庫檢查點構建方法,解決了傳統數據庫中日志寫磁盤降低事務性能,以及檢查點阻塞事務或帶來事務性能抖動的技術問題,實現了避免了日志文件寫盤帶來的事務性能下降,提高了數據庫系統中事務吞吐率,同時避免了建立檢查點對數據庫事務的阻塞或者帶來性能抖動,在事務性能提升的同時依靠硬件提供可靠性保證的技術效果。為解決上述技術問題,本申請實施例提供了一種基于虛擬存儲器快照的數據庫檢查點構建方法,包括步驟:A、數據庫中有且僅有一個事務進程,當接收到寫入或者修改請求時,寫入內存即可返回完成。內存由非易失內存模塊(Non-Volatile Dual In-line Memory Module,以下統稱為NVDIMM)構成,其專有的內存分配器提供類似文件系統的名字服務;B、數據庫中有且僅有一個調度進程,在滿足條件時,它主動通知事務進程發起設立檢查點的動作,而后它會接受事務進程和檢查點進程的報告,更新系統狀態;C、事務進程在接收到調度進程通知后,(亦或者自主發起)建立虛擬存儲快照的操作,然后啟動檢查點進程,負責所有的聯機事務處理過程(Online Transaction Processing,以下均簡稱OLTP)請求;D、檢查點進程啟動后,它將會依據虛擬存儲快照,將此刻內存中全部更新數據以及日志寫入磁盤中,完成任務通知調度進程,之后該進程將自動結束;其中,內存采用NVDIMM,寫入內存的數據即可視為可靠,更新數據存在多版本并發控制,以保證檢查點能夠獲得一致的數據庫數據狀態。采用多版本并發控制的原因是由于建立檢查點進程后,檢查點進程中依然會有事務線程在進行數據的更改,檢查點根據自身獲得的版本號來決定哪些數據是需要將其序列化到磁盤。如若不采用多版本并發控制,可能存在數據的不一致,即檢查點中某些數據是某一個時刻的狀態,而另一些數據是另一個時刻的狀態。其中,一張具體的數據表由多個分區組成,相關信息會作為元數據信息存儲在內存中,事務進程將會產生多個線程,每一個線程將會負責一個分區的事務處理,當事務不涉及多個分區時,各個線程之間不需要同步,各自獨立的完成相關事務。當事務涉及多個分區時,將會由一個唯一的特殊線程來負責統籌完成。各個線程在完成自己分區事務后,并行的在內存中維護所轄分區操作日志。跨分區的事務將由一個唯一的特殊的線程負責記錄日志。采用這樣的設計是為了加快事務的執行,尤其是當多數事務都是單表時,更容易發揮多核的性能優勢。其中,事務進程創建虛擬儲器快照。事務進程運行在自己虛擬地址空間,而檢查點進程啟動后處于另外一個虛擬地址空間。但是在事務進程并未進行數據修改時,前者的虛擬地址空間和后者的虛擬地址空間中相同的虛擬地址指向完全一致的物理地址,即兩者是完全一致的鏡像。當事務進程修改數據時,由操作系統和硬件對該數據對應的物理頁進行拷貝,該數據的虛擬地址將指向新產生的物理頁,并且將更新應用于新的物理頁。創建虛擬存儲快照后,事務進程中所有的舊的日志被標記刪除,后續新的操作將記錄在新的日志中,由于虛擬快照的原因,舊的日志將由檢查點進程歸檔到硬盤中。與此同時,檢查點進程建立后,即可根據自己建立時獲得的版本號開始進行數據的序列化到磁盤的操作。在完成對應的檢查點工作之后刪除虛擬存儲器快照。數據庫周期性地或者按照自身需求創建新的虛擬存儲器快照來進行建立新的檢查點的操作,檢查點的可靠性由NVDIMM保證。本專利技術中的方法,利用硬件、操作系統以及NVDIMM內存,實現了基于虛擬存儲器快照的快速檢查點建立方法。本專利技術中,利用硬件以及操作系統輔助的復制機制,來獲得某時刻完全一致的虛擬存儲器快照。處理器以及相關硬件針對虛擬內存管理的優化(虛擬存儲器地址轉換,高速緩存,寫時拷貝),在我們迅速獲得虛擬存儲器快照中起到關鍵作用。NVDIMM是一種可靠的內存。在斷電時,NVDIMM可以利用自身的超級電容將DRAM中的內容刷新到非易失內存芯片中,它同時擁有DRAM的速度和非易失存儲介質的可靠性。根據本專利技術的實施例,放棄傳統數據庫系統中通過日志不斷寫盤來保證事務的可靠性,以期達到提高事務處理能力的目的。具體的措施,可以通過NVDIMM本身的可靠性和通過專有內存分配器提供的名字服務來實現內存日志的可靠。換言之,日志存在內存中即可視為可靠,事務可以迅速的提交而不必等待日志同步到磁盤中。當檢查點事件觸發時,日志會通過虛擬存儲器快照由檢查點進程批量的寫入磁盤,而后標記刪除舊日志。日志在內存中的數量超過一定的閾值時會觸發檢查點事件,從而保證在整個數據庫運行過程中,日志不會持續的占有大量的內存。日志寫磁盤的方式采用的是高效的批量寫,充分利用磁盤順序寫更加高效的特點。根據本專利技術,利用虛擬存儲器快照實現了無阻塞檢查點的快速建立,事務線程對于檢查點事件完全是無感知的。檢查點進程除了將舊日志刷盤外,還會將內存中的檢查點事件產生之前已經提交事務的數據逐個刷盤,為了保證一致性,要求數據存在版本控制。本申請實施例中提供的一個或多個技術方案,至少具有如下技術效果或優點:本專利技術提出了一種基于虛擬存儲器快照的數據庫檢查點構建方法。在本專利技術模型中,避免了日志文件寫盤帶來的事務性能下降,提高了數據庫系統中事務吞吐率,同時避免了建立檢查點對數據庫事務的阻塞或者帶來性能抖動,在事務性能提本文檔來自技高網...

【技術保護點】
一種基于虛擬存儲器快照的數據庫檢查點構建方法,其特征在于,所述方法包括:步驟A:數據庫中有事務進程且數量為一個,當接收到寫入或者修改請求時,寫入內存即可返回完成,內存由非易失內存模塊構成;步驟B:數據庫中有調度進程且數量為一個,在滿足條件時,調度進程主動通知事務進程發起設立檢查點的動作,而后調度進程接受事務進程和檢查點進程的報告,更新系統狀態;步驟C:事務進程在接收到調度進程通知后,建立虛擬存儲快照的操作,然后啟動檢查點進程,事務進程負責所有的聯機事務處理過程請求;步驟D:檢查點進程啟動后,檢查點依據虛擬存儲快照,將此刻內存中全部更新數據以及日志寫入磁盤中,完成任務通知調度進程,然后通知調度進程自動結束。
【技術特征摘要】
1.一種基于虛擬存儲器快照的數據庫檢查點構建方法,其特征在于,所述方法包括:步驟A:數據庫中有事務進程且數量為一個,當接收到寫入或者修改請求時,寫入內存即可返回完成,內存由非易失內存模塊構成;步驟B:數據庫中有調度進程且數量為一個,在滿足條件時,調度進程主動通知事務進程發起設立檢查點的動作,而后調度進程接受事務進程和檢查點進程的報告,更新系統狀態;步驟C:事務進程在接收到調度進程通知后,建立虛擬存儲快照的操作,然后啟動檢查點進程,事務進程負責所有的聯機事務處理過程請求;步驟D:檢查點進程啟動后,檢查點依據虛擬存儲快照,將此刻內存中全部更新數據以及日志寫入磁盤中,完成任務通知調度進程,然后通知調度進程自動結束。2.根據權利要求1所述的基于虛擬存儲器快照的數據庫檢查點構建方法,其特征在于,更新數據存在多版本并發控制。3.根據權利要求1所述的基于虛擬存儲器快照的數據庫檢查點構建方法,其特征在于,數據庫中數據表由多個分區組成,相關信息作為元數據信息存儲在內存中。4.根據權利要求3所述的基于虛擬存儲器快照的數據庫檢查點構建方法,其特征在于,事務進程產生多個線程,每一個線程負責一個分區的事務處理,當事務不涉及多個分區時,各個線程之間不需要同步,各自獨立的完成相關事務;當事務涉及多個分區時,由第一特殊線程來負責統籌完成。5.根據權利要求4所述的...
【專利技術屬性】
技術研發人員:段翰聰,閔革勇,張建,張博,王瑾,鄭松,陳成,
申請(專利權)人:電子科技大學,
類型:發明
國別省市:四川;51
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。