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