一種緩存預熱的方法、裝置及資料庫系統與流程
2023-12-06 02:59:26

本發明涉及計算機技術領域,尤其涉及一種緩存預熱的方法、裝置及資料庫系統。
背景技術:
緩存預熱是指在資料庫系統啟動後,將硬碟中存儲的與該業務相關的數據讀入緩存,並根據這些數據的熱度將這些數據的元信息組織成一種特定信息集合的過程。
目前,一種典型的資料庫系統中使用緩存的應用場景如圖1所示。在圖1中,當資料庫系統執行業務時,協調節點接收到查詢語句後,協調節點可從相應數據節點的緩存中讀取查詢語句所需讀取的數據。如果數據節點的緩存中沒有該數據,則數據節點需要先從與其連接的硬碟中將該數據讀到數據節點的緩存中,然後協調節點再從數據節點的緩存中讀取該數據。例如,如圖1所示,假設數據節點a的緩存中緩存有該數據,則協調節點可直接從數據節點a的緩存中讀取該數據;假設數據節點b的緩存中沒有緩存該數據,則數據節點b需要先從與其連接的硬碟中將該數據讀到數據節點b的緩存中,然後協調節點再從數據節點b的緩存中讀取該數據。當資料庫系統中的某個數據節點發生故障時,該數據節點緩存的數據全部丟失,當該數據節點重啟後,該數據節點的緩存都是空的,因此資料庫系統需要在執行業務的過程中同時對該數據節點進行緩存預熱。
然而,由於數據節點緩存的數據量通常都比較大,因此需要經過數小時或者數天才能完成對數據節點的緩存預熱,如此若數據節點重啟後資料庫系統開始執行業務,則由於數據節點並沒有完成緩存預熱,因此數據節點可能需要先從與其連接的硬碟中將數據讀到其緩存中,然後協調節點再從數據節點的緩存中讀取該數據,從而使得資料庫系統執行業務的效率比較低,進而導致資料庫系統的性能下降。
技術實現要素:
本發明的實施例提供一種緩存預熱的方法、裝置及資料庫系統,能夠提高資料庫系統執行業務的效率,從而提升資料庫系統的性能。
為達到上述目的,本發明的實施例採用如下技術方案:
第一方面,本發明實施例提供一種緩存預熱的方法,應用於資料庫系統的數據節點中,所述方法包括:
第一數據節點獲取第一元信息文件,所述第一元信息文件為第二數據節點發生故障前最後一次創建的元信息文件,所述第一元信息文件用於保存所述第二數據節點發生故障前所述第二數據節點的緩存中緩存的第一熱數據的元信息;
所述第一數據節點根據所述第一元信息文件,將所述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述第一數據節點的緩存中。
本發明實施例提供的緩存預熱的方法,由於資料庫系統中的第一數據節點可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且第一數據節點可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中,因此可以縮短第一數據節點啟動(包括正常啟動和重啟)後第一數據節點緩存預熱的時間,如此當第一數據節點啟動後資料庫系統執行業務時,可以直接從第一數據節點的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
熱數據是指資料庫系統中被頻繁讀取的數據。
上述第一熱數據是指在第二數據節點發生故障前緩存在第二數據節點的緩存中的熱數據,例如可以為數據頁或者數據塊等。
其中,可以通過一個預設的頻率閾值來判斷某個數據是否是熱數據。例如,如果某個數據被讀取的頻率大於或者等於該頻率閾值,則可確定該數據是熱數據,反之,該數據不是熱數據(通常也可以稱為冷數據)。
上述第一元信息文件可以採用lru鍊表或者哈希表等形式實現。
可選的,本發明實施例提供的緩存預熱的方法還包括:
所述第一數據節點創建第二元信息文件,所述第二元信息文件用於保存所述第一數據節點的緩存中當前緩存的第二熱數據的元信息;
所述第一數據節點根據所述第一元信息文件和所述第二熱數據,將所述第二熱數據的元信息保存至所述第二元信息文件中,所述第一熱數據包括所述第二熱數據。
上述第二熱數據為第一數據節點的緩存中當前緩存的熱數據,例如可以為數據頁或者數據塊等。
第二元信息文件也可以採用lru鍊表或者哈希表等形式實現。
本發明實施例提供的緩存預熱的方法中,第一數據節點通過創建第二元信息文件,並將第二數據節點的緩存中當前緩存的第二熱數據的元信息保存到第二元信息文件中,可以保證當第一數據節點發生故障後,通過根據第二元信息文件將第一數據節點的緩存中緩存的第二熱數據讀取到其他數據節點的緩存中,如此即使第一數據節點發生故障,仍然能夠保證資料庫系統執行業務的效率,進而提升資料庫系統的性能。
可選的,本發明實施例提供的緩存預熱的方法中,所述第一數據節點根據所述第一元信息文件,將所述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述第一數據節點的緩存中之前,所述方法還包括:
所述第一數據節點根據所述硬碟的屬性,確定所述第一數據節點從所述硬碟讀取所述第一熱數據的讀取速率;
所述第一數據節點根據所述第一元信息文件,將所述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述第一數據節點的緩存中,包括:
所述第一數據節點根據所述第一元信息文件,按照所述讀取速率,將所述第一熱數據從所述硬碟中讀取到所述第一數據節點的緩存中。
本發明實施例中,第一數據節點從與第二數據節點連接的硬碟讀取第一熱數據時,第一數據節點可以按照對該硬碟的讀取速率讀取,如此可以防止讀取速率過大導致硬碟無法正常響應或者讀取速率過小影響讀取效率。
可選的,所述第一元信息文件中包括多個元信息項,所述第一熱數據包括多個子第一熱數據,所述多個元信息項與所述多個子第一熱數據一一 對應,每個元信息項用於表示與該元信息項對應的子第一熱數據的元信息,所述多個元信息項按照所述多個子第一熱數據的熱度順序排列,
所述第一數據節點根據所述第一元信息文件,將所述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述第一數據節點的緩存中,包括:
所述第一數據節點根據所述多個元信息項,按照所述多個元信息項的排列順序,依次將所述多個子第一熱數據從所述硬碟中讀取到所述第一數據節點的緩存中,直至所述第一數據節點的緩存已滿或者所述多個子第一熱數據均被讀取到所述第一數據節點的緩存中為止。
如此可以高效、快速的將第一熱數據中熱度最大的一些熱數據緩存到第一數據節點的緩存中,從而能夠提高資料庫系統執行業務的效率,提升資料庫系統的性能。
可選的,所述每個元信息項中至少包括與該元信息項對應的子第一熱數據的熱度。
每個元信息項中的子第一熱數據的熱度可以用於表示該子第一熱數據被讀取的頻率。
可選的,所述第一數據節點與所述第二數據節點為同一個數據節點;或者,所述第一數據節點為所述第二數據節點的備用數據節點。
本發明實施例中,當第二數據節點發生故障後,如果重啟該第二數據節點,則重啟後的數據節點稱為第一數據節點,此時第一數據節點和第二數據節點為同一個數據節點;如果啟動第二數據節點的備用數據節點代替第二數據節點,則啟動後的該備用數據節點稱為第一數據節點,此時第一數據節點和第二數據節點為兩個不同的數據節點。
第二方面,本發明實施例提供一種緩存預熱的裝置,所述裝置為第一數據節點,所述裝置包括:
獲取單元,用於獲取第一元信息文件,所述第一元信息文件為第二數據節點發生故障前最後一次創建的元信息文件,所述第一元信息文件用於保存所述第二數據節點發生故障前所述第二數據節點的緩存中緩存的第一熱數據的元信息;
讀取單元,用於根據所述獲取單元獲取的所述第一元信息文件,將所 述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述裝置的緩存中。
本發明實施例提供一種緩存預熱的裝置,該裝置為資料庫系統中的數據節點,例如第一數據節點,由於該裝置可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且該裝置可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據從與第二數據節點連接的硬碟中讀取到該裝置的緩存中,因此可以縮短該裝置啟動(包括正常啟動和重啟)後該裝置緩存預熱的時間,如此當該裝置啟動後資料庫系統執行業務時,可以直接從該裝置的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
可選的,所述裝置還包括創建單元和保存單元,
所述創建單元,用於創建第二元信息文件,所述第二元信息文件用於保存所述裝置的緩存中當前緩存的第二熱數據的元信息;
所述保存單元,用於根據所述獲取單元獲取的所述第一元信息文件和所述第二熱數據,將所述第二熱數據的元信息保存至所述創建單元創建的所述第二元信息文件中,所述第一熱數據包括所述第二熱數據。
可選的,所述獲取單元,還用於在所述讀取單元根據所述第一元信息文件,將所述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述裝置的緩存中之前,根據所述硬碟的屬性,確定所述讀取單元從所述硬碟讀取所述第一熱數據的讀取速率;
所述讀取單元,具體用於根據所述獲取單元獲取的所述第一元信息文件,按照所述獲取單元確定的所述讀取速率,將所述第一熱數據從所述硬碟中讀取到所述裝置的緩存中。
可選的,所述獲取單元獲取的第一元信息文件中包括多個元信息項,所述第一熱數據包括多個子第一熱數據,所述多個元信息項與所述多個子第一熱數據一一對應,每個元信息項用於表示與該元信息項對應的子第一熱數據的元信息,所述多個元信息項按照所述多個子第一熱數據的熱度順序排列,
所述讀取單元,具體用於根據所述獲取單元獲取的所述多個元信息 項,按照所述多個元信息項的排列順序,依次將所述多個子第一熱數據從所述硬碟中讀取到所述裝置的緩存中,直至所述裝置的緩存已滿或者所述多個子第一熱數據均被讀取到所述裝置的緩存中為止。
可選的,所述每個元信息項中至少包括與該元信息項對應的子第一熱數據的熱度。
可選的,所述裝置與所述第二數據節點為同一個數據節點;或者,
所述裝置為所述第二數據節點的備用數據節點。
上述第二方面中各個可選方式帶來的技術效果的描述具體可參見上述第一方面中對第一方面的各個相應的可選方式帶來的技術效果的相關描述,此處不再贅述。
第三方面,本發明實施例提供一種緩存預熱的裝置,所述裝置為第一數據節點,所述第一數據節點包括處理器、接口電路、存儲器和系統總線;
所述存儲器用於存儲計算機執行指令,所述處理器、所述接口電路和所述存儲器通過所述系統總線相互連接,當所述第一數據節點運行時,所述處理器執行所述存儲器存儲的所述計算機執行指令,以使所述第一數據節點執行上述第一方面及第一方面的各個可選方式任意之一所述的緩存預熱的方法。
本發明實施例提供一種緩存預熱的裝置,該裝置為資料庫系統中的數據節點,例如第一數據節點,由於第一數據節點可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且第一數據節點可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中,因此可以縮短第一數據節點啟動(包括正常啟動和重啟)後第一數據節點緩存預熱的時間,如此當第一數據節點啟動後資料庫系統執行業務時,可以直接從第一數據節點的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
第四方面,本發明實施例提供一種資料庫系統,所述資料庫系統包括:
上述第二方面、第二方面的各個可選方式,以及第三方面任意之一所述的緩存預熱的裝置。
本發明實施例提供一種資料庫系統,該資料庫系統中至少包括第一數據節點(即上述的緩存預熱的裝置)和第二數據節點,第一數據節點為新啟動的數據節點,第二數據節點為發生故障的數據節點。在該資料庫系統中,由於第一數據節點可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且第一數據節點可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中,因此可以縮短第一數據節點啟動(包括正常啟動和重啟)後第一數據節點緩存預熱的時間,如此當第一數據節點啟動後資料庫系統執行業務時,可以直接從第一數據節點的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例。
圖1為現有技術提供的資料庫系統執行業務的流程示意圖;
圖2為本發明實施例提供的緩存預熱的方法示意圖一;
圖3為本發明實施例提供的緩存預熱的方法示意圖二;
圖4為本發明實施例提供的緩存預熱的方法示意圖三;
圖5為本發明實施例提供的緩存預熱的方法示意圖四;
圖6為本發明實施例提供的緩存預熱的裝置的結構示意圖一;
圖7為本發明實施例提供的緩存預熱的裝置的結構示意圖二;
圖8為本發明實施例提供的第一數據節點的硬體示意圖;
圖9為本發明實施例提供的資料庫系統的架構示意圖。
具體實施方式
本文中字符「/」,一般表示前後關聯對象是一種「或者」的關係。例如,a/b可以理解為a或者b。
本發明的說明書和權利要求書中的術語「第一」和第二」等是用於區別不同的對象,而不是用於描述對象的特定順序。例如,第一數據節點和第二數據節點等是用於區別不同的數據節點,而不是用於描述數據節點的特徵順序。
在本發明的描述中,除非另有說明,「多個」的含義是指兩個或兩個以上。例如,多個元信息項是指兩個或兩個以上的元信息項;多個子第一熱數據是指兩個或兩個以上的子第一熱數據。
此外,本發明的描述中所提到的術語「包括」和「具有」以及它們的任何變形,意圖在於覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統、產品或設備沒有限定於已列出的步驟或單元,而是可選地還包括其他沒有列出的步驟或單元,或可選地還包括對於這些過程、方法、產品或設備固有的其它步驟或單元。
以下描述中,為了說明而不是為了限定,提出了諸如特定系統結構、接口、技術之類的具體細節,以便透切理解本發明。然而,本領域的技術人員應當清楚,在沒有這些具體細節的其它實施例中也可以實現本發明。在其它情況中,省略對眾所周知的裝置、電路以及方法的詳細說明,以免不必要的細節妨礙本發明的描述。
另外,在本發明實施例中,「示例的」、「示例性的」或者「例如」等詞用於表示作例子、例證或說明。本申請中被描述為「示例的」、「示例性的」或者「例如」的任何實施例或設計方案不應被解釋為比其它實施例或設計方案更優選或更具優勢。確切而言,使用「示例的」、「示例性的」或者「例如」等詞旨在以具體方式呈現概念。
下面將結合本發明實施例中的各個附圖,對本發明實施例中的技術方案進行詳細地描述,顯然,所描述的實施例僅僅是本發明的一部分實施例,而不是全部的實施例。
本發明實施例提供一種緩存預熱的方法、裝置及資料庫系統。該緩存預熱的方法和裝置可以應用於資料庫系統中。具體的,該資料庫系統中可以包括多個數據節點,每個數據節點均可以獨立執行本發明實施例提供的緩存預熱的方法。在資料庫系統中,當一個數據節點發生故障後,為了資料庫系統繼續執行相應的業務,即保證該業務的連續性,可能會重啟該數 據節點,或者也可能會由資料庫系統中的其他備用數據節點代替該數據節點。無論是重啟該數據節點,還是由資料庫系統中的其他備用數據節點代替該數據節點,當某個數據節點啟動後,該數據節點均可以採用本發明實施例提供的緩存預熱的方法對其緩存進行預熱。
本發明的下述實施例中,為了描述方便,將啟動的數據節點稱為第一數據節點,將發生故障的數據節點稱為第二數據節點。本領域技術人員可以理解,第一數據節點和第二數據節點可以為同一個數據節點;或者第一數據節點可以為第二數據節點的備用數據節點,即第一數據節點和第二數據節點為兩個不同的數據節點。
具體的,當第二數據節點發生故障後,如果重啟該第二數據節點,則重啟後的數據節點稱為第一數據節點,此時第一數據節點和第二數據節點為同一個數據節點;如果啟動第二數據節點的備用數據節點代替第二數據節點,則啟動後的該備用數據節點稱為第一數據節點,此時第一數據節點和第二數據節點為兩個不同的數據節點。
如圖2所示,本發明實施例提供一種緩存預熱的方法,該方法可以包括:
s101、第一數據節點獲取第一元信息文件。
其中,第一元信息文件為第二數據節點發生故障前最後一次創建的元信息文件,第一元信息文件用於保存第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據的元信息。
本發明實施例中,第一數據節點獲取第二數據節點發生故障前最後一次創建的元信息文件的方法具體可以為:
第一數據節點在資料庫系統中確定與第二數據節點的實例名稱相同的元信息文件(該元信息文件可能會有多個),然後再從這些元信息文件中確定出最後一次創建的元信息文件,該最後一次創建的元信息文件即為上述的第一元信息文件。
其中,第一數據節點確定最後一次創建的元信息文件的方法可以為下述的一種:
(1)第一數據節點根據這些元信息文件的創建時間確定出創建時間 最晚的一個元信息文件,即為上述的第一元信息文件。
(2)第一數據節點分別計算第一數據節點啟動的時間與這些元信息文件的創建時間之間的時間差值,並確定出時間差值最小的一個元信息文件,即為上述的第一元信息文件。
s102、第一數據節點根據第一元信息文件,將第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中。
熱數據通常是指資料庫系統中被頻繁讀取的數據,例如被頻繁讀取的數據頁或數據塊等。
示例性的,假設資料庫系統中,在某段時間內,如果某些數據被讀取的頻率大於或者等於預設的頻率閾值,則可以認為這些數據是被頻繁讀取的,即可以認為這些數據是熱數據;相反的,如果某些數據被讀取的頻率小於該頻率閾值,則可以認為這些數據不是被頻繁讀取的,即可以認為這些數據不是熱數據(通常也可以稱之為冷數據)。
其中,上述預設的頻率閾值可以根據實際使用需求進行設定,例如可以為一個經驗值,本發明不作具體限定。
本發明實施例中,第一熱數據為第二數據節點發生故障前,第二數據節點的緩存中緩存的熱數據。
元信息為描述數據的信息,主要是描述數據屬性的信息,用來支持如指示存儲位置、歷史數據、資源查找以及文件記錄等功能。
本發明實施例中的第一熱數據的元信息為描述第一熱數據的信息。在資料庫系統中,通常採用最近最少使用(英文:leastrecentlyused,縮寫:lru)鍊表或者哈希(英文:hash)表來保存第一熱數據的元信息,即上述第一元信息文件可以為lru鍊表或者哈希表等。具體的,第一元信息文件的具體實現形式可以根據實際使用需求進行選擇,本發明不作具體限定。
可選的,在數據節點的緩存中通常會緩存一些熱數據,當資料庫系統需要讀取這些熱數據時,可以直接從數據節點的緩存中讀取,而不用再從與該數據節點連接的硬碟中讀取,如此可以提高資料庫系統執行業務的效率,提升資料庫系統的性能。然而,當數據節點啟動時,數據節點的緩存為空,即數據節點的緩存中並沒有緩存數據,因此數據節點通過進行緩存 預熱,可以使得其緩存中緩存的數據為被頻繁讀取的熱數據,並且數據節點根據其緩存中緩存的熱數據的熱度,將這些熱數據的元信息組織成一種特定信息集合,例如可以用上述的lru鍊表或者哈希表等表示該特定信息集合。
可選的,本發明實施例中,第一熱數據的元信息中至少包括該第一熱數據的熱度。第一熱數據的熱度可以用於表示第一熱數據被讀取的頻率。具體的,第一熱數據的熱度越大,表示第一熱數據被讀取的頻率越高;相反的,第一熱數據的熱度越小,表示第一熱數據被讀取的頻率越低。
可選的,上述第一熱數據的元信息中還可以包括第一熱數據所在文件(第一熱數據在硬碟中是按照分布式文件形式存儲的,每個文件均有一個編號,用於唯一標識該文件)的編號、第一熱數據在與第二數據節點連接的硬碟中的偏移地址以及第一熱數據的長度等。
本發明實施例提供的緩存預熱的方法,由於第一元信息文件為第二數據節點在其發生故障前最後一次創建的,因此第一元信息文件中保存的第一熱數據的元信息為第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據的元信息,即為第二數據節點發生故障前,第二數據節點根據第一熱數據的熱度,將第一熱數據的元信息組織成的一種特定信息集合,如此第一數據節點根據第一元信息文件,可以直接將第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中,以完成第一數據節點的緩存預熱,而不用再像現有技術一樣需要進行複雜的緩存預熱過程,從而能夠縮短第一數據節點進行緩存預熱的時間。
本發明實施例中的第一數據節點和第二數據節點可以為同一個數據節點,也可以為不同的數據節點,本發明不作具體限定。對於第一數據節點和第二數據節點的具體描述可參見上述如圖2所示的實施例之前對第一數據節點和第二數據節點的相關描述,此處不再贅述。
本發明實施例提供一種緩存預熱的方法,該方法應用於資料庫系統的數據節點中,由於資料庫系統中的第一數據節點可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且第一數據節點可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一 熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中,因此可以縮短第一數據節點啟動(包括正常啟動和重啟)後第一數據節點緩存預熱的時間,如此當第一數據節點啟動後資料庫系統執行業務時,可以直接從第一數據節點的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
可選的,結合圖2,如圖3所示,本發明實施例提供的緩存預熱的方法還可以包括:
s103、第一數據節點創建第二元信息文件。
其中,第二元信息文件用於保存第一數據節點的緩存中當前緩存的第二熱數據的元信息。
可選的,本發明實施例中的第二熱數據的元信息為描述第二熱數據的信息。在資料庫系統中,通常採用lru鍊表或者哈希表來保存第二熱數據的元信息,即上述第二元信息文件可以為lru鍊表或者哈希表等。具體的,第二元信息文件的具體實現形式可以根據實際使用需求進行選擇,本發明不作具體限定。
可選的,本發明實施例中,第二熱數據的元信息中至少包括該第二熱數據的熱度。第二熱數據的熱度可以用於表示第二熱數據被讀取的頻率。具體的,第二熱數據的熱度越大,表示第二熱數據被讀取的頻率越高;相反的,第二熱數據的熱度越小,表示第二熱數據被讀取的頻率越低。
可選的,上述第二熱數據的元信息中還可以包括第二熱數據所在文件(第二熱數據在硬碟中是按照分布式文件形式存儲的,每個文件均有一個編號,用於唯一標識該文件)的編號、第二熱數據在與第二數據節點連接的硬碟中的偏移地址以及第二熱數據的長度等。
s104、第一數據節點根據第一元信息文件和第二熱數據,將第二熱數據的元信息保存至第二元信息文件中。
其中,第一熱數據包括第二熱數據。
本發明實施例中,由於第一數據節點為新啟動的數據節點(正常啟動或者重啟),且第一數據節點根據第一元信息文件進行了緩存預熱,因此資料庫系統中並沒有用於保存第一數據節點的緩存中當前緩存的第二熱數據的元信息的文件,所以第一數據節點需要創建一個第二元信息文件, 用於保存第一數據節點的緩存中當前緩存的第二熱數據的元信息。
本領域技術人員可以理解,由於第一數據節點和第二數據節點可以為同一個數據節點,也可以為兩個不同的數據節點;因此第一數據節點的緩存大小和第二數據節點的緩存大小可能相同,也可能不同;即第一數據節點的緩存中緩存的第一熱數據和第二數據節點的緩存中緩存的第二熱數據可能相同,也可能不同。
示例性的,如果第一數據節點和第二數據節點為同一個數據節點,則第一數據節點的緩存大小和第二數據節點的緩存大小相同,即第一數據節點的緩存中緩存的第一熱數據和第二數據節點的緩存中緩存的第二熱數據可能相同。如果第一數據節點和第二數據節點為兩個不同的數據節點,則第一數據節點的緩存大小和第二數據節點的緩存大小可能不同,即第一數據節點的緩存中緩存的第一熱數據和第二數據節點的緩存中緩存的第二熱數據也可能不同。如果第一數據節點和第二數據節點為兩個不同的數據節點,則第一數據節點的緩存大小和第二數據節點的緩存大小也可能相同,即第一數據節點的緩存中緩存的第一熱數據和第二數據節點的緩存中緩存的第二熱數據也可能相同。當第一數據節點的緩存中緩存的第一熱數據和第二數據節點的緩存中緩存的第二熱數據不同時,第二熱數據可能為第一熱數據中的一部分熱數據。
第一數據節點創建第二元信息文件後,第一數據節點需要根據第一元信息文件和第一數據節點的緩存中當前緩存的第二熱數據,將第二熱數據的元信息保存至第二元信息文件中。
示例性的,假設第二熱數據可能為第一熱數據中熱度比較大的一部分熱數據,那麼第二元信息文件中保存的可能是第一元信息文件中這一部分熱數據的元信息。例如,第一數據節點可以根據其緩存中緩存的第二熱數據,將第一元信息文件中與第二熱數據對應的元信息複製到第二元信息文件中。
本發明實施例可以不限制s101和s103的執行順序。具體的,本發明實施例可以先執行s101,後執行s103;還可以先執行s103,後執行s101;還可以同時執行s101和s103。
其中,圖3中僅以s103在s101和s102之後執行為例進行示例性 的說明,其並不作為對本發明實施例提供的緩存預熱的方法的相關步驟的執行順序的限定。
本發明實施例提供的緩存預熱的方法中,第一數據節點通過創建第二元信息文件,並將第二數據節點的緩存中當前緩存的第二熱數據的元信息保存到第二元信息文件中,可以保證當第一數據節點發生故障後,通過根據第二元信息文件將第一數據節點的緩存中緩存的第二熱數據讀取到其他數據節點的緩存中,如此即使第一數據節點發生故障,仍然能夠保證資料庫系統執行業務的效率,進而提升資料庫系統的性能。
可選的,結合圖2,如圖4所示,在s102之前,本發明實施例提供的緩存預熱的方法還可以包括:
s105、第一數據節點根據與第二數據節點連接的硬碟的屬性,確定第一數據節點從該硬碟讀取第一熱數據的讀取速率。
其中,與每個數據節點連接的硬碟的屬性可以保存在該數據節點的資料庫中。硬碟的屬性可以包括對硬碟的讀取/寫入速率。
需要說明的是,本發明實施例中,當第一數據節點和第二數據節點為兩個不同的數據節點時,第一數據節點作為第二數據節點的備用數據節點,因此第一數據節點可以訪問第二數據節點的資料庫,即第一數據節點可以獲取到與第二數據節點連接的硬碟的屬性。
當然,硬碟的屬性還可以包括硬碟的名稱、硬碟的型號以及硬碟的其他性能參數等,本發明實施例不再贅述。
如圖4所示,上述s102具體可以包括:
s102a、第一數據節點根據第一元信息文件,按照該讀取速率,將第一熱數據從該硬碟中讀取到第一數據節點的緩存中。
第一數據節點從與第二數據節點連接的硬碟讀取第一熱數據時,第一數據節點可以按照對該硬碟的讀取速率讀取,如此可以防止讀取速率過大導致硬碟無法正常響應或者讀取速率過小影響讀取效率。
可選的,本發明實施例提供的緩存預熱的方法中,上述第一元信息文件中可以包括多個元信息項,上述第一熱數據可以包括多個子第一熱數據。多個元信息項與多個子第一熱數據一一對應,其中,每個元信息項用於表示與該元信息項對應的子第一熱數據的元信息。多個元信息項按照多 個子第一熱數據的熱度順序排列。
示例性的,多個元信息項可以按照多個子第一熱數據的熱度由大到小順序排列;或者多個元信息項可以按照多個子第一熱數據的熱度由小到大順序排列。具體的,可以根據實際使用需求進行設定,本發明不作具體限定。
結合圖2,如圖5所示,上述s102具體可以包括:
s102b、第一數據節點根據第一元信息文件中包括的多個元信息項,按照多個元信息項的排列順序,依次將第一熱數據中包括的多個子第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中。
需要說明的是,本發明實施例提供的緩存預熱的方法中,第一數據節點可以循環執行將子第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中的步驟,直至第一數據節點的緩存已滿或者多個子第一熱數據(即第一熱數據)均被讀取到第一數據節點的緩存中為止。如此可以高效、快速的將第一熱數據中熱度最大的一些熱數據緩存到第一數據節點的緩存中,從而能夠提高資料庫系統執行業務的效率,進而提升資料庫系統的性能。
可選的,本發明實施例中,第一數據節點在執行上述s102b時,也可以進一步按照上述s105中確定的讀取速率從與第二數據節點連接的硬碟中依次讀取多個子第一熱數據。
可選的,本發明實施例中,第一數據節點將與第二數據節點連接的硬碟中的第一熱數據讀取到第一數據節點的緩存中之後,為了防止第一數據節點發生故障導致其緩存中的數據丟失,第一數據節點可以周期性地將第一數據節點的緩存中緩存的第二熱數據(可能與第一熱數據相同或者為第一熱數據中的一部分熱數據)寫入與第一數據節點連接的硬碟。由於該第二熱數據的寫入操作可能會導致寫入數據的開銷增加,因此為了解決該問題,本發明實施例提出基於隨機存取存儲器(英文:random-accessmemory,縮寫:ram)的文件系統的實現方式。
具體的,本發明實施例採用基於ram的文件系統,並將與第一數據節點連接的硬碟的實際物理地址映射到基於ram的文件系統在第一數據節點的緩存中的虛擬內存地址,如此當第一數據節點對基於ram的文件 系統的虛擬內存地址進行讀取/寫入操作時,可以認為是對與第一數據節點連接的硬碟的實際物理地址進行讀取/寫入操作,且由於基於ram的文件系統的讀取/寫入操作的開銷通常較小,因此本發明實施例採用基於ram的文件系統的實現方式可以降低第二熱數據寫入硬碟所帶來的寫入數據的開銷。
本發明實施例中,第一數據節點將與第一數據節點連接的硬碟的實際物理地址映射到基於ram的文件系統在第一數據節點的緩存中的虛擬內存地址的方法具體可以通過mmap(將一個文件或者其它對象映射到內存)的方式實現。
本發明實施例提供的緩存預熱的方法中,上述如圖2至圖5任意之一所示的方法流程中的第一數據節點均可以通過一個後備線程執行上述方法流程,當第一數據節點的緩存已滿或者第一熱數據均被讀取到第一數據節點的緩存中時,第一數據節點可以停止該後備線程的執行。
可選的,本發明實施例提供的緩存預熱的方法中,在執行上述如圖2至圖5任意之一所示的方法之前,第二數據節點首先需要創建第一元信息文件,並根據資料庫系統執行業務過程中第二數據節點的緩存中緩存的第一熱數據,將第一熱數據的元信息保存至第一元信息文件中。
具體的,第二數據節點可以按照一定的周期創建第一元信息文件,並在第一元信息文件的數量滿足預設的數量閾值後,用最晚創建的第一元信息文件替換最早創建的第一元信息文件,依次類推,當第二數據節點發生故障後,第一數據節點執行本發明實施例中上述如圖2至圖5任意之一所示的方法。
其中,上述預設的數量閾值可以根據實際使用需求進行設定,本發明不作具體限定。
可選的,本發明實施例中,第一數據節點完成緩存預熱之後,第一數據節點還可以根據資料庫系統所執行的業務,進一步地對其緩存中緩存的第二熱數據進行更新。且第一數據節點還可以根據第一數據節點的緩存中緩存的第二熱數據對第二元信息文件進行相應的更新。
第一數據節點通過對第一數據節點的緩存中緩存的第二熱數據和第二元信息文件進行更新,可以保證第二元信息文件與第一數據節點的緩存 中緩存的第二熱數據能夠互相對應,從而能夠提高資料庫系統執行業務的準確性和效率,進而進一步提升資料庫系統的性能。
如圖6所示,本發明實施例提供一種緩存預熱的裝置,該緩存預熱的裝置可以應用於資料庫系統中,該緩存預熱的裝置可以為資料庫系統中的數據節點,該數據節點可以為第一數據節點,該第一數據節點可以包括用於執行上述如圖2至圖5任意之一所示的方法流程中第一數據節點執行的相應步驟的相應模塊。示例的,該緩存預熱的裝置可以包括:
獲取單元10,用於獲取第一元信息文件,所述第一元信息文件為第二數據節點發生故障前最後一次創建的元信息文件,所述第一元信息文件用於保存所述第二數據節點發生故障前所述第二數據節點的緩存中緩存的第一熱數據的元信息;讀取單元11,用於根據所述獲取單元10獲取的所述第一元信息文件,將所述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述裝置的緩存12中。
可選的,結合圖6,如圖7所示,所述裝置還包括創建單元13和保存單元14,
所述創建單元13,用於創建第二元信息文件,所述第二元信息文件用於保存所述裝置的緩存12中當前緩存的第二熱數據的元信息;所述保存單元14,用於根據所述獲取單元10獲取的所述第一元信息文件和所述第二熱數據,將所述第二熱數據的元信息保存至所述創建單元13創建的所述第二元信息文件中,所述第一熱數據包括所述第二熱數據。
可選的,所述獲取單元10,還用於在所述讀取單元11根據所述第一元信息文件,將所述第一熱數據從與所述第二數據節點連接的硬碟中讀取到所述裝置的緩存中之前,根據所述硬碟的屬性,確定所述讀取單元11從所述硬碟讀取所述第一熱數據的讀取速率;所述讀取單元11,具體用於根據所述獲取單元10獲取的所述第一元信息文件,按照所述獲取單元10確定的所述讀取速率,將所述第一熱數據從所述硬碟中讀取到所述裝置的緩存12中。
可選的,所述獲取單元10獲取的第一元信息文件中包括多個元信息項,所述第一熱數據包括多個子第一熱數據,所述多個元信息項與所述多 個子第一熱數據一一對應,每個元信息項用於表示與該元信息項對應的子第一熱數據的元信息,所述多個元信息項按照所述多個子第一熱數據的熱度順序排列。
相應的,所述讀取單元11,具體用於根據所述獲取單元10獲取的所述多個元信息項,按照所述多個元信息項的排列順序,依次將所述多個子第一熱數據從所述硬碟中讀取到所述裝置的緩存12中,直至所述裝置的緩存12已滿或者所述多個子第一熱數據均被讀取到所述裝置的緩存12中為止。
可選的,所述每個元信息項中至少包括與該元信息項對應的子第一熱數據的熱度。
可選的,所述裝置與所述第二數據節點為同一個數據節點;或者,
所述裝置為所述第二數據節點的備用數據節點。
可以理解,本實施例的緩存預熱的裝置(或者第一數據節點)可對應於上述如圖2至圖5任意之一所示的實施例的緩存預熱的方法中的第一數據節點,並且本實施例的緩存預熱的裝置中的各個模塊的劃分和/或功能等均是為了實現如圖2至圖5任意之一所示的方法流程,為了簡潔,在此不再贅述。
本發明實施例中,緩存預熱的裝置(或者第一數據節點)可以為資料庫系統中的一個數據功能實體,該數據功能實體可以通過運行在某個硬體實體,例如物理機上的軟體實現。
本發明實施例提供一種緩存預熱的裝置,該裝置為資料庫系統中的數據節點,例如第一數據節點,由於該裝置可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且該裝置可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據從與第二數據節點連接的硬碟中讀取到該裝置的緩存中,因此可以縮短該裝置啟動(包括正常啟動和重啟)後該裝置緩存預熱的時間,如此當該裝置啟動後資料庫系統執行業務時,可以直接從該裝置的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
如圖8所示,本發明實施例提供一種緩存預熱的裝置,所述裝置為資料庫系統中的數據節點,例如上述實施例中描述的第一數據節點。以第一數據節點為例,所述第一數據節點包括處理器20、接口電路21、存儲器22和系統總線23。
所述存儲器22用於存儲計算機執行指令,所述處理器20、所述接口電路21和所述存儲器22通過所述系統總線23相互連接,當所述第一數據節點運行時,所述處理器20執行所述存儲器22存儲的所述計算機執行指令,以使所述第一數據節點執行如圖2至圖5任意之一所示的緩存預熱的方法。具體的緩存預熱的方法可參見上述如圖2至圖5任意之一所示的實施例中的相關描述,此處不再贅述。
本實施例還提供一種存儲介質,該存儲介質可以包括所述存儲器22。
所述處理器20可以為中央處理器(英文:centralprocessingunit,縮寫:cpu)。所述處理器20還可以為其他通用處理器、數位訊號處理器(英文:digitalsignalprocessing,簡稱dsp)、專用集成電路(英文:applicationspecificintegratedcircuit,簡稱asic)、現場可編程門陣列(英文:field-programmablegatearray,簡稱fpga)或者其他可編程邏輯器件、分立門或者電晶體邏輯器件、分立硬體組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。
所述處理器20可以為專用處理器。該專用處理器可以包括具有第一數據節點相應專用處理功能的晶片。
所述存儲器22可以包括易失性存儲器(英文:volatilememory),例如隨機存取存儲器(英文:random-accessmemory,縮寫:ram);所述存儲器22也可以包括非易失性存儲器(英文:non-volatilememory),例如只讀存儲器(英文:read-onlymemory,縮寫:rom),快閃記憶體(英文:flashmemory),硬碟(英文:harddiskdrive,縮寫:hdd)或固態硬碟(英文:solid-statedrive,縮寫:ssd);所述存儲器22還可以包括上述種類的存儲器的組合。
所述系統總線23可以包括數據總線、電源總線、控制總線和信號狀態總線等。本實施例中為了清楚說明,在圖8中將各種總線都示意為系統總線23。
所述接口電路21具體可以是第一數據節點上與其他數據節點進行交互的接口。所述處理器20通過所述接口電路21與其他數據節點之間進行數據的收發。
在具體實現過程中,上述如圖2至圖5任意之一所示的方法流程中的各步驟均可以通過硬體形式的處理器20執行存儲器22中存儲的軟體形式的計算機執行指令實現。為避免重複,此處不再贅述。
可選的,一種可能的實現形式是,本發明實施例提供的緩存預熱的裝置,即上述第一數據節點可以包括硬體實體和軟體環境,該硬體實體可以通過運行相應的軟體環境實現第一數據節點的相應功能。例如該硬體實體可以為運行資料庫系統的物理機等,該軟體環境可以為運行在該硬體實體上的資料庫系統等。
本發明實施例提供一種緩存預熱的裝置,該裝置為資料庫系統中的數據節點,例如第一數據節點,由於第一數據節點可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且第一數據節點可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中,因此可以縮短第一數據節點啟動(包括正常啟動和重啟)後第一數據節點緩存預熱的時間,如此當第一數據節點啟動後資料庫系統執行業務時,可以直接從第一數據節點的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
本發明實施例提供一種資料庫系統,該資料庫系統可以包括緩存預熱的裝置,該緩存預熱的裝置可以為上述如圖6至圖8任意之一所示的實施例中描述的緩存預熱的裝置。如圖9所示,該緩存預熱的裝置具體可以為資料庫系統中的一個數據節點,即上述如圖2至圖8任意之一所示的實施例中的第一數據節點。進一步地,如圖9所示,該資料庫系統中還可以包括第二數據節點、第三數據節點等若干個數據節點,以及用於協調該若干個數據節點的協調節點,每個數據節點均有至少一個硬碟(圖9中僅以一個數據節點連接一個硬碟為例進行示例性的說明)與其連接,用於存儲該 數據節點的緩存中緩存的數據。其中,資料庫系統中的每個數據節點均可以獨立執行本發明實施例中上述如圖2至圖5任意之一所示的緩存預熱的方法。
一種可能的實現形式是,本發明實施例中的資料庫系統可以包括硬體實體和軟體環境,該硬體實體可以通過運行相應的軟體環境實現資料庫系統的相應功能。例如,該硬體實體可以為物理機等,該軟體環境可以為資料庫系統等。具體的,該資料庫系統中的所有數據節點可以共用一個硬體實體和一個軟體環境實現,或者該資料庫系統中每個數據節點都可以單獨通過一個硬體實體和一個軟體環境實現。具體的,可以根據實際資料庫系統的形態來確定,本發明實施例不作具體限定。
本發明實施例提供一種資料庫系統,該資料庫系統中至少包括第一數據節點和第二數據節點,第一數據節點為新啟動的數據節點,第二數據節點為發生故障的數據節點。在該資料庫系統中,由於第一數據節點可以獲取第二數據節點發生故障前最後一次創建的用於保存第二數據節點的緩存中緩存的第一熱數據的元信息的第一元信息文件,且第一數據節點可以根據該第一元信息文件直接將第二數據節點發生故障前第二數據節點的緩存中緩存的第一熱數據從與第二數據節點連接的硬碟中讀取到第一數據節點的緩存中,因此可以縮短第一數據節點啟動(包括正常啟動和重啟)後第一數據節點緩存預熱的時間,如此當第一數據節點啟動後資料庫系統執行業務時,可以直接從第一數據節點的緩存中讀取相應的數據,從而提高了資料庫系統執行業務的效率,進而提升了資料庫系統的性能。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分, 實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元可以採用軟體功能單元的形式實現。
所述集成的單元如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,該技術方案的全部或部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)或處理器執行本發明各個實施例所述方法的全部或部分步驟。所述存儲介質是非短暫性(英文:non-transitory)介質,包括:快閃記憶體、移動硬碟、只讀存儲器、隨機存取存儲器、磁碟或者光碟等各種可以存儲程序代碼的介質。
以上所述,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應所述以權利要求的保護範圍為準。