通用高速緩存管理系統(tǒng)的制作方法
【專利摘要】在計(jì)算設(shè)備的易失性存儲器中將高速緩存分配到數(shù)據(jù)處理實(shí)例,其中高速緩存的每一個被專有地分配給數(shù)據(jù)處理實(shí)例的單獨(dú)的一個。公共高速緩存被分配在計(jì)算設(shè)備的易失性存儲器中,其中公共高速緩存由數(shù)據(jù)處理實(shí)例共享。數(shù)據(jù)處理實(shí)例的每個實(shí)例被配置為:識別在分配給該實(shí)例的特定高速緩存中的數(shù)據(jù)塊,其中自從數(shù)據(jù)塊被最后持久地寫到一個或多個存儲設(shè)備以來數(shù)據(jù)塊沒有變化;使得數(shù)據(jù)塊被存儲在公共高速緩存中;以及從特定高速緩存中消除數(shù)據(jù)塊。在公共高速緩存中的數(shù)據(jù)塊被維護(hù)而不被持久地寫到一個或多個存儲設(shè)備。
【專利說明】通用高速緩存管理系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本公開涉及數(shù)據(jù)處理系統(tǒng)中的存儲器管理。
【背景技術(shù)】
[0002]本節(jié)中描述的方法是可以追隨的方法,但不一定是已經(jīng)預(yù)先構(gòu)思或追隨的方法。因此,除非另有陳述,不應(yīng)當(dāng)假定本節(jié)中描述的方法中的任何一個僅僅由于它們包含在本節(jié)中而被承認(rèn)為現(xiàn)有技術(shù)。
[0003]對稱多處理器(SMP)機(jī)器、或箱是在其中兩個或更多個中央處理單元(CPU)、或處理器可操作被連接到單個共享的物理存儲器并由單個操作系統(tǒng)(OS)實(shí)例控制的多處理器計(jì)算機(jī)主機(jī)。通常,大型組織在相同的SMP主機(jī)上布置多數(shù)據(jù)庫實(shí)例以求改善使用并減小總所有權(quán)成本(TC0)。由于SMP主機(jī)的高的TC0,許多組織想要另外從SMP主機(jī)上的數(shù)據(jù)庫實(shí)例的此類多租用部署中實(shí)現(xiàn)群集可分級性。然而令人遺憾的是,群集多租用部署因?yàn)樗鼈冊馐懿荒茉谙嗤腟MP主機(jī)上運(yùn)行的多數(shù)據(jù)庫實(shí)例當(dāng)中共享物理存儲器而不被廣泛使用。
[0004]具體地,群集可分級性由于物理存儲器的超供給而很難在多租用部署中實(shí)現(xiàn)。例如,當(dāng)SMP主機(jī)可以具有共享物理存儲器的一個或多個千兆的4-8個CPU時,在典型部署中可能有二十乃至更多在SMP主機(jī)上同時運(yùn)行的數(shù)據(jù)庫實(shí)例。為了解決那么多數(shù)據(jù)庫實(shí)例的存儲器需求,一般地迫使管理員在各種數(shù)據(jù)庫實(shí)例之中配置SMP主機(jī)的所有可用物理存儲器。然而,當(dāng)一個或一些數(shù)據(jù)庫實(shí)例開始經(jīng)歷比其它較大的工作量時,對SMP主機(jī)上的OS實(shí)例來說因?yàn)橐呀?jīng)供給SMP主機(jī)的所有物理存儲器,所以分配更多的物理存儲器給這些數(shù)據(jù)庫實(shí)例是不可能的。為了解決此超供給問題,管理員一般必須關(guān)閉當(dāng)時不繁忙的一個或若干數(shù)據(jù)庫實(shí)例,以使得SMP主機(jī)上的OS實(shí)例可以向正在經(jīng)歷大工作量的數(shù)據(jù)庫實(shí)例重新供給釋放的物理存儲器。不用說,這種解決方案不僅僅因?yàn)樗芾韱T的干涉而是低效的,而且也因?yàn)楫?dāng)數(shù)據(jù)庫實(shí)例被關(guān)閉時它們對故障轉(zhuǎn)移和任何其它可用性目的是臟的,所以缺乏從SMP主機(jī)上的多租用部署中期望的合并。此外,在此類多租用部署之下,很明顯存儲器超供給的問題是對通過在一個或更多群集中部署多數(shù)據(jù)庫實(shí)例來實(shí)現(xiàn)真實(shí)可分級性的嚴(yán)重妨礙。
[0005]當(dāng)如上相對于SMP主機(jī)上部署的數(shù)據(jù)庫實(shí)例描述存儲器超供給的問題時,應(yīng)當(dāng)注意此問題不是只有SMP主機(jī)或數(shù)據(jù)庫實(shí)例才有的。相反地,對于使用大易失性存儲器以緩沖來自持久存儲器的數(shù)據(jù)以便在將它寫回到持久存儲器前訪問和變更數(shù)據(jù)的任何類型的處理實(shí)例,更小型商品服務(wù)器機(jī)器上的多租用部署可能經(jīng)歷相同的存儲器超供給問題。
【專利附圖】
【附圖說明】
[0006]這里描述的技術(shù)是以示例的方式而不是通過限制的方式示出在附圖的圖中,并且其中的類似參考數(shù)字指代類似的元素并且其中:
[0007]圖1是示出了根據(jù)一個實(shí)施例的用于高速緩存管理的示例方法的流程圖;[0008]圖2是示出了根據(jù)一個實(shí)施例的示例操作上下文的方框圖;
[0009]圖3是示出了根據(jù)一個實(shí)施例的另一個示例操作上下文的方框圖;
[0010]圖4是示出了在其上可以執(zhí)行實(shí)施例的示例計(jì)算設(shè)備的方框圖。
【具體實(shí)施方式】
[0011]為了說明,在下面的描述中闡述許多細(xì)節(jié)以便提供描述的用于自動數(shù)據(jù)安排的技術(shù)的徹底了解。然而將很明顯,沒有這些細(xì)節(jié)也可以實(shí)踐這里描述的技術(shù)。在其它實(shí)例中,以方框圖的形式顯示公知的結(jié)構(gòu)和設(shè)備以避免對這里描述的技術(shù)不必要地模糊。
[0012]一般概述
[0013]這里描述用于通用高速緩存管理的技術(shù)。在計(jì)算設(shè)備上執(zhí)行的多個數(shù)據(jù)處理實(shí)例的每一個被分配在計(jì)算設(shè)備的易失性存儲器中專屬的、專用高速緩存中。在計(jì)算設(shè)備上的數(shù)據(jù)處理實(shí)例的此類多租用部署中,每個數(shù)據(jù)處理實(shí)例使用它的專用高速緩存來緩沖持久地存儲在一個或多個持久存儲設(shè)備上的數(shù)據(jù)項(xiàng),其中數(shù)據(jù)處理實(shí)例在將數(shù)據(jù)項(xiàng)從專用高速緩存持久地寫回到持久存儲設(shè)備中之前訪問、修改、和/或另外處理專用高速緩存中的數(shù)據(jù)項(xiàng)。
[0014]根據(jù)這里描述的技術(shù),公共高速緩存被分配在計(jì)算設(shè)備的易失性存儲器中以使得公共高速緩存可以由運(yùn)行在計(jì)算設(shè)備上的多個數(shù)據(jù)處理實(shí)例共享。當(dāng)任何給定數(shù)據(jù)處理實(shí)例在它的專用高速緩存中需要空間以從持久存儲設(shè)備中讀取一個或多個附加數(shù)據(jù)項(xiàng)時,數(shù)據(jù)處理實(shí)例在它的專用高速緩存中識別“干凈的”數(shù)據(jù)項(xiàng)以用于驅(qū)逐(eviction),例如,諸如由于將數(shù)據(jù)項(xiàng)從專用高速緩存最后寫到持久存儲設(shè)備而在專用高速緩存中沒有修改的數(shù)據(jù)項(xiàng)。代替僅僅從它的專用高速緩存中丟棄干凈的數(shù)據(jù)項(xiàng),數(shù)據(jù)處理實(shí)例存儲或使得干凈的數(shù)據(jù)項(xiàng)被存儲在公共高速緩存中。在干凈的數(shù)據(jù)項(xiàng)已被存儲在公共高速緩存中之后,數(shù)據(jù)處理實(shí)例從它的專用高速緩存中消除干凈的數(shù)據(jù)項(xiàng)以便為存儲需要被從持久存儲設(shè)備中讀取的附加數(shù)據(jù)項(xiàng)釋放空間。此后,當(dāng)數(shù)據(jù)處理項(xiàng)需要將干凈的數(shù)據(jù)項(xiàng)讀取到它的專用高速緩存時,數(shù)據(jù)處理實(shí)例首先檢查公共高速緩存以確定干凈的數(shù)據(jù)項(xiàng)是否仍然存儲在其中-并且如果是,則數(shù)據(jù)處理實(shí)例從公共高速緩存中檢索干凈的數(shù)據(jù)項(xiàng)而不是從持久存儲設(shè)備中讀取它。
[0015]以這種方式,公共高速緩存有效地充當(dāng)為多數(shù)據(jù)實(shí)例在易失性存儲器中維護(hù)干凈的數(shù)據(jù)項(xiàng)的通用高速緩存資源池。公共高速緩存有效地在全部數(shù)據(jù)處理實(shí)例之間共享而不必被專有地分配給任何一個實(shí)例;因此,如果特定的實(shí)例變得更活動,則該特定的實(shí)例將比其它實(shí)例耗費(fèi)更多公共高速緩存而沒有對其它實(shí)例的任何可用性影響-其不需要被拆卸,除了至多將需要從持久存儲設(shè)備處取得未在公共高速緩存中發(fā)現(xiàn)的那些數(shù)據(jù)項(xiàng)。以這樣的方式,這里描述的技術(shù):(1)避免數(shù)據(jù)處理實(shí)例的停止以便向其它更忙碌的實(shí)例重新供給它們的存儲器;(2)避免存儲器超供給的問題并且允許計(jì)算設(shè)備上的數(shù)據(jù)處理實(shí)例被以群集配置而不必須面對頻繁的存儲器重新供給。
[0016]在示例實(shí)施例中,描述的技術(shù)包括由計(jì)算設(shè)備執(zhí)行的方法,包括:在計(jì)算設(shè)備的易失性存儲器中將第一高速緩存專有地分配給兩個或更多數(shù)據(jù)處理實(shí)例的第一實(shí)例,其中第一高速緩存被配置以存儲被持久存儲在一個或多個存儲設(shè)備上的第一組數(shù)據(jù)塊的副本;在計(jì)算設(shè)備的易失性存儲器中將第二高速緩存專有地分配給兩個或更多數(shù)據(jù)處理實(shí)例的第二實(shí)例,其中第二高速緩存被配置以存儲被持久存儲在一個或多個存儲設(shè)備上的第二組數(shù)據(jù)塊的副本;在計(jì)算設(shè)備的易失性存儲器中分配公共高速緩存;第一實(shí)例執(zhí)行以下步驟:在第一高速緩存中識別自第一數(shù)據(jù)塊被最后寫到一個或多個存儲設(shè)備以來沒有被改變的第一數(shù)據(jù)塊;使得第一數(shù)據(jù)塊被存儲在公共高速緩存中;從第一高速緩存中消除第一數(shù)據(jù)塊;第二實(shí)例執(zhí)行以下步驟:在第二高速緩存中識別自第二數(shù)據(jù)塊被最后寫到一個或多個存儲設(shè)備以來沒有被改變的第二數(shù)據(jù)塊;使得第二數(shù)據(jù)塊被存儲在公共高速緩存中;從第二高速緩存中消除第二數(shù)據(jù)塊;以及在公共高速緩存中維護(hù)包括第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的數(shù)據(jù)塊而不必持久地將數(shù)據(jù)塊寫到一個或多個存儲設(shè)備。
[0017]在另一個示例實(shí)施例中,這里描述的技術(shù)可以被實(shí)現(xiàn)為由計(jì)算設(shè)備執(zhí)行的方法,包括:在計(jì)算設(shè)備的易失性存儲器中將多個高速緩存分配到多個數(shù)據(jù)庫實(shí)例,其中多個高速緩存的每一個被專有地分配給多個數(shù)據(jù)庫實(shí)例的單獨(dú)的一個;在計(jì)算設(shè)備的易失性存儲器中分配由多個數(shù)據(jù)庫實(shí)例共享的公共高速緩存;每個特定的數(shù)據(jù)庫實(shí)例執(zhí)行以下步驟:識別被專有地分配給多個數(shù)據(jù)庫實(shí)例的多個高速緩存的特定高速緩存中的特定數(shù)據(jù)塊,其中所述特定數(shù)據(jù)塊自所述特定數(shù)據(jù)塊被最后持久地寫到一個或多個存儲設(shè)備以來沒有被改變;使得特定數(shù)據(jù)塊被存儲在公共高速緩存中;從特定高速緩存中消除特定數(shù)據(jù)塊;以及在公共高速緩存中維護(hù)包括特定數(shù)據(jù)塊的數(shù)據(jù)塊而不持久地將數(shù)據(jù)塊寫到一個或多個存儲設(shè)備。
[0018]在各種其它實(shí)施例中,這里描述的技術(shù)可以被實(shí)現(xiàn)為存儲在一個或多個計(jì)算機(jī)可讀存儲介質(zhì)上的可執(zhí)行指令的序列的形式的一個或多個計(jì)算機(jī)程序產(chǎn)品,和/或被實(shí)現(xiàn)為被配置以執(zhí)行如上所述的方法的一個或多個系統(tǒng)。
[0019]示例實(shí)施例的功能描述
[0020]圖1是示出了根據(jù)這里描述的技術(shù)的用于通用高速緩存管理的示例方法的流程圖。在一些實(shí)施例中,在圖1示出的方法的步驟由在計(jì)算設(shè)備上執(zhí)行的一個或多個處理作為一個或多個數(shù)據(jù)處理實(shí)例的一部分執(zhí)行。如這里使用的,“實(shí)例”指代被分配諸如存儲器、CPU時間、和/或盤存儲空間之類的計(jì)算資源以便執(zhí)行一個或多個功能的、存儲器的分配的塊和與存儲器的塊相關(guān)聯(lián)的一個或多個處理集??梢园ㄔ趯?shí)例中的處理的示例是被配置以響應(yīng)來自各種客戶端和應(yīng)用對一個或多個服務(wù)和/或功能的請求的“服務(wù)器”(這里也稱為“服務(wù)器處理”)。
[0021]如這里使用的,“數(shù)據(jù)處理實(shí)例”指代在計(jì)算設(shè)備的易失性存儲器中被分配專用的高速緩存以便緩沖持久地存儲在一個或多個存儲設(shè)備上的數(shù)據(jù)塊,其中數(shù)據(jù)處理實(shí)例在將數(shù)據(jù)塊持久地從它的專用高速緩存寫回到存儲設(shè)備前在它的專用高速緩存中訪問、修改、和/或否則處理數(shù)據(jù)塊。如這里使用的,“專用”或“私有”高速緩存指代由僅僅一個數(shù)據(jù)處理實(shí)例可訪問的而且不能由其它數(shù)據(jù)處理實(shí)例訪問或共享的高速緩存。數(shù)據(jù)處理實(shí)例的示例不限制地包括在一個或多個數(shù)據(jù)庫中處理數(shù)據(jù)的數(shù)據(jù)庫實(shí)例、處理諸如圖像、音頻/視頻流、及其他流化的多介質(zhì)內(nèi)容之類的各種類型的多介質(zhì)的多介質(zhì)服務(wù)器實(shí)例、高速緩存被持久地存儲在別處的內(nèi)容的互聯(lián)網(wǎng)服務(wù)器實(shí)例、高速緩存數(shù)據(jù)以服務(wù)特定類型的客戶端和應(yīng)用的應(yīng)用服務(wù)器實(shí)例及其他類型的中間件服務(wù)器實(shí)例、以及被配置以通過將持久地存儲的數(shù)據(jù)緩沖到易失性存儲器高速緩存中來處理持久地存儲的數(shù)據(jù)的任何其它類型的實(shí)例。[0022]如這里使用的,“數(shù)據(jù)塊”指代被分配在持久存儲設(shè)備中以存儲由數(shù)據(jù)處理實(shí)例管理的一部分?jǐn)?shù)據(jù)的單元(例如,諸如數(shù)據(jù)結(jié)構(gòu)之類)。應(yīng)當(dāng)注意,如這里使用的,數(shù)據(jù)塊是被持久地存儲在一個或多個存儲設(shè)備上的數(shù)據(jù)而且在數(shù)據(jù)處理實(shí)例的重新啟動之后繼續(xù)存在的單元;因此,數(shù)據(jù)塊不同于數(shù)據(jù)處理實(shí)例的各種動態(tài)和靜態(tài)配置參數(shù)以及各種運(yùn)行時間屬性、變量、處理、及其他由數(shù)據(jù)處理實(shí)例在實(shí)例的運(yùn)行時間操作期間在計(jì)算設(shè)備的易失性存儲器中維護(hù)的處理內(nèi)容信息。
[0023]在圖1中示出的方法在下文中描述為如由諸如OS實(shí)例和/或數(shù)據(jù)處理實(shí)例之類的一個或多個實(shí)例(或它的處理)執(zhí)行。然而,應(yīng)當(dāng)注意此描述僅僅是說明性目的并且圖1的方法不局限于由任何特定類型實(shí)例或計(jì)算機(jī)處理執(zhí)行。
[0024]在步驟102中,第一高速緩存在計(jì)算設(shè)備的易失性存儲器中被專有地分配到在計(jì)算設(shè)備上執(zhí)行的兩個或更多數(shù)據(jù)處理實(shí)例的第一實(shí)例。第一高速緩存被配置以存儲被持久地存儲在一個或多個存儲設(shè)備上的一組數(shù)據(jù)塊的副本。例如,在一些實(shí)施方式中,在計(jì)算設(shè)備上的OS實(shí)例可以將易失性存儲器的一部分(例如,諸如一批存儲器地址)分配到第一數(shù)據(jù)處理實(shí)例。然后,從實(shí)例化第一實(shí)例的軟件組件和/或在第一實(shí)例中的處理可以在第一高速緩存和包括第一實(shí)例的處理之間分配存儲器的此部分。在另一個示例中,計(jì)算設(shè)備上的OS實(shí)例可以執(zhí)行到第一高速緩存以及到包括在第一數(shù)據(jù)處理實(shí)例內(nèi)的每一處理的存儲器的實(shí)際分配。因此,這里描述的技術(shù)不局限于具有為第一數(shù)據(jù)處理實(shí)例的專用高速緩存分配存儲器的特定類型的組件。
[0025]以類似的方式,在步驟104中第二高速緩存在同樣的計(jì)算設(shè)備的易失性存儲器中被專有地分配到在計(jì)算設(shè)備上執(zhí)行的兩個或更多數(shù)據(jù)處理實(shí)例的第二實(shí)例。第二高速緩存被配置以存儲被持久地存儲在一個或多個存儲設(shè)備上的一組數(shù)據(jù)塊的副本,其中該組數(shù)據(jù)塊可以與由第一數(shù)據(jù)處理實(shí)例處理的那組數(shù)據(jù)塊相同的或不同。
[0026]在步驟106中,公共高速緩存被分配在計(jì)算設(shè)備的易失性存儲器中。公共高速緩存被以運(yùn)行在計(jì)算設(shè)備上的兩個或更多數(shù)據(jù)處理實(shí)例的至少一些(和可能全部)可以通過在其中存儲干凈的數(shù)據(jù)塊而共享公共高速緩存的方式分配。根據(jù)這里描述的技術(shù),公共高速緩存可以由各種類型的處理和實(shí)例分配。例如,在一些實(shí)施方式中,公共高速緩存可以由在計(jì)算設(shè)備上執(zhí)行的OS實(shí)例分配為共享的范圍的存儲器地址。在其它實(shí)施方式中,OS實(shí)例可以將存儲器的一部分分配到公共高速緩存實(shí)例。然后,從中實(shí)例化公共高速緩存實(shí)例的軟件組件和/或在公共高速緩存實(shí)例中的處理可以在公共高速緩存和包括公共高速緩存實(shí)例的處理當(dāng)中分配存儲器的此部分。
[0027]根據(jù)這里描述的技術(shù),在各種實(shí)施例和實(shí)施方式中公共高速緩存可以被分配在計(jì)算設(shè)備的物理存儲器中、在被連接到計(jì)算設(shè)備的快閃存儲卡上、和/或在計(jì)算設(shè)備的物理存儲器和快閃存儲卡的組合中以使得公共高速緩存的一部分存在于物理存儲器中并且溢出部分存在于快閃存儲卡上。
[0028]在步驟108A中,兩個或更多數(shù)據(jù)處理實(shí)例的第一實(shí)例識別第一高速緩存中的干凈的第一數(shù)據(jù)塊,其被專有地分配給第一實(shí)例。如這里使用過的,“高速緩存”數(shù)據(jù)塊指代存儲在高速緩存中的數(shù)據(jù)塊,其中自數(shù)據(jù)塊被從高速緩存最后寫入(或流溢)到持久存儲器以來在高速緩存中數(shù)據(jù)塊沒有被修改。
[0029]在步驟IIOA中,第一實(shí)例使得識別的干凈的數(shù)據(jù)塊被存儲在公共高速緩存中。例如,在一些實(shí)施方式中,第一實(shí)例或它的處理存儲公共高速緩存中的干凈的數(shù)據(jù)塊;在其它實(shí)施方式中,第一實(shí)例或它的處理將干凈的數(shù)據(jù)塊發(fā)送到管理公共高速緩存的公共高速緩存實(shí)例,并且公共高速緩存實(shí)例或它的處理將干凈的數(shù)據(jù)塊存儲在公共高速緩存中并且向第一實(shí)例返回確認(rèn)。
[0030]在干凈的數(shù)據(jù)塊被存儲在公共高速緩存中之后,在步驟112A中第一實(shí)例或它的處理從分配給第一實(shí)例的第一高速緩存中消除(或“清除”)干凈的數(shù)據(jù)塊而不將干凈的數(shù)據(jù)塊寫入到存儲設(shè)備。例如,第一實(shí)例或它的處理可以消除干凈的數(shù)據(jù)塊以便為存儲需要被從存儲設(shè)備讀取到第一高速緩存中的另一個數(shù)據(jù)塊釋放空間。
[0031]第二數(shù)據(jù)處理實(shí)例可以按類似方式處理它的干凈的數(shù)據(jù)塊-例如,代替僅僅丟棄干凈的數(shù)據(jù)塊以便在它的專用的高速緩存中釋放空間,第二實(shí)例首先使得它的干凈的數(shù)據(jù)塊被存儲在公共高速緩存中。例如,在步驟108B中,第二實(shí)例或它的處理識別第二高速緩存中的干凈的第二數(shù)據(jù)塊,其被專有地分配給第二實(shí)例。然后,在步驟IlOB中,第二實(shí)例或它的處理使得識別的干凈的數(shù)據(jù)塊被存儲在公共高速緩存中,例如通過直接地將干凈的數(shù)據(jù)塊存儲到公共高速緩存中或通過將干凈的數(shù)據(jù)塊發(fā)送到管理公共高速緩存的公共高速緩存實(shí)例。在干凈的數(shù)據(jù)塊被存儲在公共高速緩存中之后,在步驟112B中,第二數(shù)據(jù)處理實(shí)例或它的處理從它的專用的高速緩存中消除干凈的數(shù)據(jù)塊而不將干凈的數(shù)據(jù)塊刷到存儲設(shè)備。
[0032]根據(jù)這里描述的技術(shù),在步驟114中維護(hù)公共高速緩存中的數(shù)據(jù)塊而不將其寫(或刷)回到其中數(shù)據(jù)塊被持久地存儲的存儲設(shè)備。例如,當(dāng)需要在公共高速緩存中釋放空間時,管理公共高速緩存的處理可以使用各種高速緩存管理機(jī)制以識別并且從公共高速緩存中翻出數(shù)據(jù)塊,其中此類高速緩存機(jī)制可以不限制地包括最近最少使用(LRU)機(jī)制、最近最多使用(MRU)機(jī)制、最不常用(LFU)機(jī)制、修正機(jī)制、和/或它的各種組合和修改。根據(jù)這里描述的技術(shù),處理公共高速緩存的實(shí)例和/或處理并未修改或相反改變存儲在公共高速緩存中的數(shù)據(jù)塊的內(nèi)容,并且自公共高速緩存中的數(shù)據(jù)塊被清理以來,不需要將這些數(shù)據(jù)塊持久地寫回到存儲設(shè)備。
[0033]當(dāng)兩個或更多數(shù)據(jù)處理實(shí)例的數(shù)據(jù)處理實(shí)例(例如,諸如第一實(shí)例或第二實(shí)例)需要將數(shù)據(jù)塊讀到它的專用的高速緩存中時,數(shù)據(jù)處理實(shí)例首先檢查以確定正被討論的數(shù)據(jù)塊是否被存儲在公共高速緩存中。如果正被討論的數(shù)據(jù)塊被存儲在公共高速緩存中,則數(shù)據(jù)處理實(shí)例讀取或使得數(shù)據(jù)塊被從公共高速緩存而不是存儲設(shè)備中讀取,從而將一個或多個輸入/輸出(I/O)操作存儲到存儲設(shè)備。如果正被討論的數(shù)據(jù)塊沒有存儲在公共高速緩存中(或者因?yàn)閿?shù)據(jù)塊還沒有被存儲在公共高速緩存中或者已經(jīng)從那里翻出),則數(shù)據(jù)處理實(shí)例使得數(shù)據(jù)塊被從存儲設(shè)備中檢索。在一些實(shí)施方式中,使得數(shù)據(jù)塊被從存儲設(shè)備中檢索包含數(shù)據(jù)處理實(shí)例本身從存儲設(shè)備中取來數(shù)據(jù)塊。在其它實(shí)施方式中,響應(yīng)于在公共高速緩存中的數(shù)據(jù)塊的高速緩存未中,管理公共高速緩存的實(shí)例從存儲設(shè)備中檢索數(shù)據(jù)塊并且將它返回到數(shù)據(jù)處理實(shí)例。在使用公共高速緩存群集的操作上下文中,響應(yīng)于高速緩存未中,管理局部公共高速緩存的實(shí)例可以從公共高速緩存群集中的另一個高速緩存中取來數(shù)據(jù)塊而不是從存儲設(shè)備中檢索。
[0034]以這樣的方式,這里描述的用于通用高速緩存管理的技術(shù)避免了多租用部署中的存儲器超供給的問題。另外,如這里描述的公共高速緩存的使用允許在相同計(jì)算設(shè)備上的數(shù)據(jù)處理實(shí)例被配置在可分級群集中而沒有存儲器重新供給問題,同時對特定的多租用部署可能需要的各種可用性功能(例如,諸如瞬時故障轉(zhuǎn)移、任務(wù)關(guān)鍵的性能級,等等)提供支持。
[0035]塊識別數(shù)據(jù)
[0036]根據(jù)這里描述的技術(shù),為被存儲在被分配在計(jì)算設(shè)備的易失性存儲器中并由多種數(shù)據(jù)處理共享的公共高速緩存中的數(shù)據(jù)塊維護(hù)塊識別數(shù)據(jù)。如這里使用的,“塊識別數(shù)據(jù)”指代識別被存儲在公共高速緩存中的數(shù)據(jù)塊的一個或多個值。在各種實(shí)施例中,塊識別數(shù)據(jù)可以包括各種類型的標(biāo)識符并且可以由各種實(shí)體以各種類型的數(shù)據(jù)結(jié)構(gòu)維護(hù)。
[0037]例如,在各種實(shí)施例中用于給定數(shù)據(jù)塊的塊識別數(shù)據(jù)可以包括但不限于任何適當(dāng)?shù)膲K標(biāo)識符,諸如:唯一地識別數(shù)據(jù)塊的系統(tǒng)范圍的塊標(biāo)識符;一個或多個存儲器標(biāo)識符(例如,諸如盤ID、文件ID、等等)和一個或多個塊標(biāo)識符(例如,諸如塊ID、文件偏移,等等)的組合,其中所述組合對共享計(jì)算設(shè)備上的公共高速緩存的任何數(shù)據(jù)處理實(shí)例唯一地識別數(shù)據(jù)塊;指示數(shù)據(jù)塊是否是當(dāng)前的一個或多個版本標(biāo)識符,其中版本標(biāo)識符可以具體地與各個數(shù)據(jù)塊或與同時或在相同的事務(wù)中修改的一組數(shù)據(jù)塊相關(guān)聯(lián);以及任何其它類型的對在計(jì)算設(shè)備上執(zhí)行的數(shù)據(jù)處理實(shí)例適合以識別數(shù)據(jù)塊的塊標(biāo)識符和/或塊標(biāo)識符的組合。
[0038]在各種實(shí)施例中對存儲在計(jì)算設(shè)備上的公共高速緩存中的數(shù)據(jù)塊的塊識別數(shù)據(jù)可以被在任何可以被分配在計(jì)算設(shè)備的易失性存儲器中的適當(dāng)類型的數(shù)據(jù)結(jié)構(gòu)和/或以易失性存儲器和持久存儲器的一些組合中維護(hù)。例如,在一些實(shí)施例中塊識別數(shù)據(jù)可以被在數(shù)據(jù)目錄或其它適當(dāng)?shù)谋痪S護(hù)在主機(jī)托管公共高速緩存的計(jì)算設(shè)備的易失性存儲器中的數(shù)據(jù)倉庫維護(hù)。在其它實(shí)施例中,塊識別數(shù)據(jù)可以在公共高速緩存中和在共享公共高速緩存的數(shù)據(jù)處理實(shí)例的專用高速緩存中維護(hù)。例如,在這些實(shí)施例中管理公共高速緩存的實(shí)例可以將唯一的塊ID分配給每個數(shù)據(jù)塊作為存儲在公共高速緩存中的數(shù)據(jù)塊并且可以將此塊ID返回到使得數(shù)據(jù)塊被存儲在公共高速緩存中的數(shù)據(jù)處理實(shí)例;一接收到此塊ID,數(shù)據(jù)處理實(shí)例將此塊ID關(guān)聯(lián)或映射到它對于數(shù)據(jù)塊維護(hù)的其它塊識別數(shù)據(jù),并且使用此塊ID請求來自公共高速緩存中的數(shù)據(jù)塊。應(yīng)當(dāng)注意這里描述的技術(shù)不局限于用于存儲塊識別數(shù)據(jù)的任何特定的類型的存儲器,并且因此這里描述的示例將被認(rèn)為是說明性的而不是限制性意義的。
[0039]在各種實(shí)施例中,各種類型的實(shí)例和處理可以用來維護(hù)用于由共享相同的計(jì)算設(shè)備上的公共高速緩存的多種數(shù)據(jù)處理實(shí)例訪問的數(shù)據(jù)塊的塊識別數(shù)據(jù)。例如,在一些實(shí)施例中塊識別數(shù)據(jù)可以由在計(jì)算設(shè)備上專用以跟蹤用于數(shù)據(jù)處理實(shí)例和公共高速緩存的數(shù)據(jù)塊的實(shí)例或其處理維護(hù)。在其它實(shí)施例中,塊識別數(shù)據(jù)可以被管理公共高速緩存的實(shí)例和在公共高速緩中儲存數(shù)據(jù)塊的數(shù)據(jù)處理實(shí)例二者維護(hù)。在其中多個計(jì)算設(shè)備上的公共高速緩存被以群集配置的其它實(shí)施例中,分布式群集件處理可以用來維護(hù)用于可以被存儲在以群集配置的公共高速緩存中的任何一個公共高速緩存中的所有數(shù)據(jù)塊的塊識別數(shù)據(jù)。應(yīng)當(dāng)注意這里描述的技術(shù)不局限于使用特定類型的實(shí)例或處理以維護(hù)塊識別數(shù)據(jù),并且因此這里描述的示例將被認(rèn)為是說明性的而不是限制性意義的。
[0040]示例操作上下文
[0041]這里描述的用于通用高速緩存管理的技術(shù)的示例實(shí)施例可以對部署在相同的計(jì)算設(shè)備上的多數(shù)據(jù)庫實(shí)例執(zhí)行。[0042]如這里使用過的,“數(shù)據(jù)庫實(shí)例”指代管理數(shù)據(jù)庫的實(shí)例?!皵?shù)據(jù)庫”指代存儲在一個或多個持久存儲設(shè)備上的數(shù)據(jù)集合。在各種實(shí)施例和實(shí)施方式中,包括數(shù)據(jù)庫的數(shù)據(jù)集合可以被存儲在持久存儲設(shè)備上作為存儲各種數(shù)據(jù)庫對象的數(shù)據(jù)的一個或多個數(shù)據(jù)文件、存儲維護(hù)相容的事務(wù)處理和恢復(fù)所必需的日志數(shù)據(jù)的一個或多個日志文件、以及存儲與數(shù)據(jù)庫相關(guān)聯(lián)的控制和配置數(shù)據(jù)的一個或多個控制和配置文件。
[0043]在數(shù)據(jù)庫實(shí)例的上下文中,數(shù)據(jù)塊是被分配在持久存儲器中以存儲包括與數(shù)據(jù)庫的一個或多個數(shù)據(jù)庫對象相關(guān)聯(lián)的數(shù)據(jù)的一個或多個數(shù)據(jù)行(和/或它的部分)的原子單位(例如,諸如數(shù)據(jù)結(jié)構(gòu))。在一些實(shí)施例中,由數(shù)據(jù)庫實(shí)例處理的全部數(shù)據(jù)塊可以具有相同的固定尺寸;在其它實(shí)施例中,由數(shù)據(jù)庫實(shí)例處理的數(shù)據(jù)塊可以具有變化的尺寸。在各種實(shí)施例中,數(shù)據(jù)庫實(shí)例一般地被配置為以不小于數(shù)據(jù)塊的單位寫入并且讀取易失性存儲器中的數(shù)據(jù)。例如,當(dāng)數(shù)據(jù)庫實(shí)例需要訪問特定的數(shù)據(jù)行或數(shù)據(jù)行組中的數(shù)據(jù)時,數(shù)據(jù)庫實(shí)例或它的處理確定物理地存儲特定數(shù)據(jù)行或數(shù)據(jù)行組的數(shù)據(jù)塊,如果這些數(shù)據(jù)塊已經(jīng)不在高速緩存中,則將這些數(shù)據(jù)塊從持久存儲器復(fù)制到數(shù)據(jù)庫實(shí)例的專用存儲器高速緩存中,并且訪問被存儲在專用存儲器高速緩存中的數(shù)據(jù)塊的副本中的特定數(shù)據(jù)行或數(shù)據(jù)行組的的數(shù)據(jù)。數(shù)據(jù)庫實(shí)例或它的處理可以使用各種存儲管理機(jī)制以將任何修改的(同也稱為“臟的”)數(shù)據(jù)塊從專用存儲器高速緩存刷到持久存儲器。
[0044]在各種實(shí)施例和實(shí)施方式中,存儲給定數(shù)據(jù)庫的數(shù)據(jù)的數(shù)據(jù)塊可以在邏輯上以各種存儲空間結(jié)構(gòu)(例如,諸如范圍、段、表空間,等等)的形式組織并且可以被物理地分配為原始硬盤塊或操作系統(tǒng)(OS)數(shù)據(jù)文件的部分。例如,數(shù)據(jù)庫(例如,諸如關(guān)系或?qū)ο箨P(guān)系數(shù)據(jù)庫)的數(shù)據(jù)可以在邏輯上以包括但是不局限于表、視圖、序列、存儲的過程、索引、和到其它數(shù)據(jù)庫的鏈接的數(shù)據(jù)庫對象(有時也稱為“模式對象”)來組織。物理上,數(shù)據(jù)庫的數(shù)據(jù)以數(shù)據(jù)塊被存儲在持久存儲設(shè)備上,其中在各種實(shí)施例和實(shí)施方式中,這樣的數(shù)據(jù)塊可以被物理地作為為原始盤塊直接存儲在持久存儲設(shè)備上或可以被存儲在存儲在持久存儲器上的文件中。根據(jù)存儲在數(shù)據(jù)行中的數(shù)據(jù)值的數(shù)目和數(shù)據(jù)類型,特定的數(shù)據(jù)塊可以存儲來自單一數(shù)據(jù)行中的數(shù)據(jù)值或可以存儲來自多個數(shù)據(jù)行中的數(shù)據(jù)值,其中多個數(shù)據(jù)行在邏輯上可以屬于相同的數(shù)據(jù)庫對象或多個不同的數(shù)據(jù)庫對象。舉例來說,關(guān)系表的數(shù)據(jù)在邏輯上可以被組織在記錄中,其中每個記錄包括用于存儲來自為表配置的對應(yīng)一個或多個列的數(shù)據(jù)值的一個或多個字段。物理上,每個數(shù)據(jù)記錄中的數(shù)據(jù)值可以被作為數(shù)據(jù)行存儲在被存儲在諸如硬盤之類的持久存儲設(shè)備上的文件中的一個或多個數(shù)據(jù)塊中。例如,在以三列名為“ID”、“名”、和“姓”的形式存儲雇員數(shù)據(jù)的關(guān)系表中,特定的數(shù)據(jù)行可以為特定的雇員存儲用于雇員ID、名、和姓的值。
[0045]在多租用部署中,相同的數(shù)據(jù)庫可以由被配置為一個或多個計(jì)算設(shè)備上的群集的多數(shù)據(jù)庫實(shí)例訪問。在這樣的多租用部署中,配置若干(5、10、甚至20)數(shù)據(jù)庫實(shí)例以在相同的計(jì)算設(shè)備上運(yùn)行是罕見的,其一般地是SMP機(jī)器(或主機(jī))。在這樣的多租用部署中解決存儲器需求的常規(guī)方法是管理員將易失性存儲器的小部分分配給每個數(shù)據(jù)庫實(shí)例的專用的緩沖高速緩存,并且將SMP主機(jī)的易失性存儲器的其余部分分配給由SMP主機(jī)上的OS實(shí)例管理的文件緩沖器高速緩存。SMP主機(jī)上的OS實(shí)例使用文件緩沖器高速緩存以高速緩存來自被存儲在由OS實(shí)例管理的一個或多個文件系統(tǒng)中而且由數(shù)據(jù)庫實(shí)例和運(yùn)行在SMP主機(jī)上的其它處理經(jīng)由I/O系統(tǒng)調(diào)用訪問的文件的文件塊。[0046]常規(guī)方法的主要缺點(diǎn)是OS實(shí)例視文件緩沖器高速緩存中的文件塊為不透明的數(shù)據(jù)。例如,當(dāng)OS實(shí)例或它的I/O處理可以存儲一些最小限度的元數(shù)據(jù)以使得它可以對文件緩沖高速緩存中的文件塊提供讀和寫訪問時,OS實(shí)例或它的I/O處理不知道并不跟蹤數(shù)據(jù)庫實(shí)例怎樣使用文件緩沖器高速緩存中的文件塊。相反,OS實(shí)例將文件緩沖器高速緩存中的每個文件塊與將文件塊放置在文件緩沖器高速緩存中的數(shù)據(jù)庫實(shí)例處理的OS-處理ID相關(guān)聯(lián)。這有效地防止數(shù)據(jù)庫實(shí)例訪問已經(jīng)由不同的數(shù)據(jù)庫實(shí)例放入文件緩沖器高速緩存中的文件塊。另外,當(dāng)數(shù)據(jù)庫實(shí)例處理消逝時,為校正理由,由文件緩沖器高速緩存中的該處理放置的所有文件塊被清除-如果它們是臟的,則OS I/O處理將這些文件塊寫入到盤,或如果它們是干凈的,則僅僅將它們拋到外面。對這一點(diǎn)的理由是OS實(shí)例不能確保當(dāng)處理重新啟動時它將被分配相同的處理ID ;因此,為校正理由,OS實(shí)例必須從文件緩沖器高速緩存中清除已經(jīng)由消逝的處理放置在那兒的任何文件塊。實(shí)際上,這意味著當(dāng)數(shù)據(jù)庫實(shí)例重新啟動時,它不會在文件緩沖器高速緩存中找到已經(jīng)被數(shù)據(jù)庫實(shí)例處理放置在那兒的任何文件塊。
[0047]為了解決數(shù)據(jù)庫實(shí)例的多租用部署的這些及其他問題(例如,諸如存儲器超供給問題、有限的可分級性、和受限的可用性),這里描述的技術(shù)提供在OS實(shí)例以上的層分配并管理計(jì)算設(shè)備上的公共高速緩存,其中為存儲在公共高速緩存中的數(shù)據(jù)塊維護(hù)方塊識別數(shù)據(jù)以便提供對由共享公共高速緩存的多數(shù)據(jù)庫實(shí)例對數(shù)據(jù)塊的使用的可見性。
[0048]圖2是示出了根據(jù)一個實(shí)施例的示例操作上下文的方框圖;計(jì)算設(shè)備202被通過網(wǎng)絡(luò)200可通信地連接到存儲設(shè)備215。存儲設(shè)備215包括如光或磁盤215A、215B、和215C的一個或多個非易失性存儲介質(zhì)設(shè)備。網(wǎng)絡(luò)200可以是包括被配置以在計(jì)算設(shè)備和存儲設(shè)備之間轉(zhuǎn)移磁盤級和/或文件級數(shù)據(jù)的一個或多個網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)元素(例如,諸如橋、交換機(jī)、路由器等等)的存儲區(qū)網(wǎng)絡(luò)(SAN)或網(wǎng)絡(luò)區(qū)存儲器(NAS)。
[0049]計(jì)算設(shè)備202是被配置以執(zhí)行OS實(shí)例(圖2中未顯示)的計(jì)算機(jī)系統(tǒng)。根據(jù)特定的部署,計(jì)算設(shè)備可以是被配置有諸如處理器(CPU)、存儲器、存儲控制器、網(wǎng)絡(luò)接口卡、等等之類的各種硬件元件的單獨(dú)的機(jī)器主機(jī)或的它的葉。如在圖2中示出的,計(jì)算設(shè)備202包括易失性存儲器204。易失性存儲器204可以包括物理存儲器、附著于計(jì)算設(shè)備202的一個或多個快閃存儲卡上的閃速存儲器,和/或它的組合。
[0050]多數(shù)據(jù)庫實(shí)例206被配置以在計(jì)算設(shè)備202上執(zhí)行。數(shù)據(jù)庫實(shí)例206管理跨網(wǎng)絡(luò)200存儲在存儲設(shè)備215上的一個或多個數(shù)據(jù)庫。數(shù)據(jù)庫實(shí)例206的每一個包括易失性存儲器204的塊(或部分)和被分配諸如存儲器、CPU時間、和/或盤存儲器空間之類的計(jì)算資源以便執(zhí)行一個或多個功能的一個或多個處理集。例如,包括在數(shù)據(jù)庫實(shí)例206的每一個內(nèi)的處理集可以包括但不限制于一個或多個數(shù)據(jù)庫寫入處理、一個或多個日志寫入處理、一個或多個檢查點(diǎn)處理、和一個或多個數(shù)據(jù)庫服務(wù)器處理。(應(yīng)當(dāng)注意,在不同的實(shí)施方式中,由數(shù)據(jù)庫寫入處理、日志寫入處理、檢查點(diǎn)處理、和數(shù)據(jù)庫服務(wù)器處理執(zhí)行的功能可以由單一、可能多線程的共同地稱為數(shù)據(jù)庫服務(wù)器的處理執(zhí)行。)
[0051]數(shù)據(jù)庫寫入處理被配置以將“臟”數(shù)據(jù)塊從數(shù)據(jù)庫實(shí)例的專用高速緩存刷到存儲由數(shù)據(jù)庫實(shí)例管理的數(shù)據(jù)庫的數(shù)據(jù)的持久存儲設(shè)備上的數(shù)據(jù)文件。日志寫入處理被配置以將用于維護(hù)由數(shù)據(jù)庫實(shí)例管理的數(shù)據(jù)庫的一致的事務(wù)處理和恢復(fù)的重做和/或未做信息寫到持久存儲設(shè)備上的記錄文件。檢查點(diǎn)處理被配置以將檢查點(diǎn)寫到記錄文件和/或數(shù)據(jù)文件,其是存儲指示在記錄檢查點(diǎn)之前對數(shù)據(jù)塊做出的全部變化已經(jīng)被寫到持久存儲設(shè)備的系統(tǒng)變化數(shù)目(SCN)的數(shù)據(jù)結(jié)構(gòu)。
[0052]數(shù)據(jù)庫服務(wù)器處理(或數(shù)據(jù)庫服務(wù)器)被分配諸如存儲器和CPU時間之類的計(jì)算資源以便執(zhí)行諸如數(shù)據(jù)管理功能(包括但不限于,從持久存儲設(shè)備讀取數(shù)據(jù)塊到數(shù)據(jù)庫實(shí)例的專用高速緩存、由客戶端和應(yīng)用處理請求和查詢以執(zhí)行讀取、插入、刪除、和修改存儲在數(shù)據(jù)庫實(shí)例的專用高速緩存中的數(shù)據(jù)塊中的數(shù)據(jù)的各種操作以及事務(wù))、以及數(shù)據(jù)庫管理功能(包括但不限于,處理查詢和請求以建立數(shù)據(jù)庫和表、為數(shù)據(jù)庫和表分配盤空間,和/或建立和維護(hù)用戶登錄信息、角色信息、和安全策略信息)之類的一個或多個功能。
[0053]如在圖2中示出的,數(shù)據(jù)庫實(shí)例206A為它的專用的私有高速緩存210A分配易失性存儲器204的一部分。數(shù)據(jù)庫實(shí)例206A包括處理208A,諸如,例如一個或多個數(shù)據(jù)庫寫入處理、一個或多個日志寫入處理、一個或多個檢查點(diǎn)處理、和一個或多個數(shù)據(jù)庫服務(wù)器處理。一個或多個處理208A維護(hù)分配給數(shù)據(jù)庫實(shí)例206A的易失性存儲器中的鎖結(jié)構(gòu)212A,其中對于存儲在私有高速緩存210A中的每個數(shù)據(jù)塊,鎖結(jié)構(gòu)212A包括用于控制訪問高速緩存210A中的數(shù)據(jù)塊的鎖結(jié)構(gòu)。
[0054]類似地,數(shù)據(jù)庫實(shí)例206B為它的專用的私有高速緩存210B分配易失性存儲器204的一部分。數(shù)據(jù)庫實(shí)例206B包括處理208B,諸如,例如數(shù)據(jù)庫寫入處理、日志寫入處理、檢查點(diǎn)處理、以及數(shù)據(jù)庫服務(wù)器處理。一個或多個處理208B維護(hù)分配給數(shù)據(jù)庫實(shí)例206B的易失性存儲器中的鎖結(jié)構(gòu)212B,其中對于存儲在私有高速緩存210B中的每個數(shù)據(jù)塊,鎖結(jié)構(gòu)212B包括用于控制訪問高速緩存210B中的數(shù)據(jù)塊的鎖結(jié)構(gòu)。
[0055]根據(jù)這里描述的用于通用高速緩存管理的技術(shù),易失性存儲器204的一部分被分配給公共高速緩存220。易失性存儲器204的一部分也被分配給塊元數(shù)據(jù)222,其為存儲在公共高速緩存220中的數(shù)據(jù)塊存儲塊識別數(shù)據(jù)。一個或多個處理224被分配存儲器及其他計(jì)算資源(例如CPU時間)以管理公共高速緩存220和塊元數(shù)據(jù)222。如在圖2中示出的,單一實(shí)例230可以從存儲在計(jì)算機(jī)可讀存儲介質(zhì)中的軟件組件中實(shí)例化,當(dāng)執(zhí)行時軟件組件可以分配存儲器到及配置公共高速緩存220、塊元數(shù)據(jù)222、和處理224。然而應(yīng)當(dāng)注意,在不同的實(shí)施例和實(shí)施方式中,公共高速緩存和塊元數(shù)據(jù)可以由為每個執(zhí)行不同的功能的不同實(shí)例初始化的一個或多個處理管理。因此,在圖2的操作上下文中的單一實(shí)例230的使用將被認(rèn)為是說明性的而不是限制性意義的。
[0056]在圖2的操作上下文中,實(shí)例230可以是除為被配置以在計(jì)算設(shè)備202上執(zhí)行的數(shù)據(jù)庫實(shí)例206執(zhí)行存儲量管理之外還管理公共高速緩存230的存儲管理實(shí)例。對存儲量管理,當(dāng)數(shù)據(jù)庫實(shí)例想要建立新數(shù)據(jù)文件以存儲用于給定數(shù)據(jù)庫的數(shù)據(jù)時,數(shù)據(jù)庫實(shí)例從實(shí)例230請求在一組盤上建立數(shù)據(jù)文件。從實(shí)例230的觀點(diǎn)中,數(shù)據(jù)文件是被分配給為數(shù)據(jù)庫存儲數(shù)據(jù)的數(shù)據(jù)塊的邏輯地址空間。實(shí)例230將數(shù)據(jù)文件的邏輯地址空間映射到盤群集中不同盤上的物理存儲區(qū)域-例如,數(shù)據(jù)文件可以具有映射到100個IMB的塊的總共100MB的存儲空間,其中每個塊存儲在盤群集的特定盤上。在以這樣的方式建立和映射數(shù)據(jù)文件之后,實(shí)例230將范圍映射返回到數(shù)據(jù)庫實(shí)例,其中范圍映射描述從數(shù)據(jù)文件的邏輯地址空間映射到盤群集中的盤上的物理存儲區(qū)域。因此,當(dāng)數(shù)據(jù)庫實(shí)例想要持久地在磁盤上存儲數(shù)據(jù)塊時,數(shù)據(jù)庫實(shí)例確定在數(shù)據(jù)文件內(nèi)的數(shù)據(jù)塊的邏輯地址,使用范圍映射將此邏輯地址轉(zhuǎn)換到對應(yīng)的盤上的物理盤地址(例如,諸如“磁盤I”、偏移500),并且將數(shù)據(jù)塊寫入到由物理盤地址指向的盤上的位置。
[0057]根據(jù)這里描述的技術(shù),實(shí)例230或它的處理可以通過將分配給公共高速緩存的易失性存儲器組織成映射到一范圍的存儲器地址的存儲器群來管理公共高速緩存220,其中來自數(shù)據(jù)庫實(shí)例206的數(shù)據(jù)塊在那個范圍內(nèi)以不同的偏移量存儲。因?yàn)榇鎯υ诠哺咚倬彺?20中的數(shù)據(jù)塊總是干凈的,所以實(shí)例230可以維護(hù)公共高速緩存220而不持久地將數(shù)據(jù)塊從公共高速緩存寫入到存儲設(shè)備215并且當(dāng)數(shù)據(jù)塊被存儲在公共高速緩存中時不允許對數(shù)據(jù)塊中的數(shù)據(jù)做出任何修改。此外,實(shí)例230可以使用任何已知的高速緩存管理機(jī)制(例如,如LRU、MRU、LFU、等等)來當(dāng)數(shù)據(jù)庫實(shí)例需要公共高速緩存中的空間存儲數(shù)據(jù)塊時確定并且丟棄(或翻出)來自公共高速緩存230的數(shù)據(jù)塊。
[0058]在操作中,數(shù)據(jù)庫實(shí)例206A在它的私有高速緩存210A中存儲用于由數(shù)據(jù)庫實(shí)例管理的數(shù)據(jù)庫的數(shù)據(jù)塊的副本(圖2中未示出)。(應(yīng)當(dāng)注意在圖2中,高速緩存210A和210B中的陰影區(qū)域表示自這些數(shù)據(jù)塊最后一次寫到存儲設(shè)備215以來在這些高速緩存中已經(jīng)修改的“臟”數(shù)據(jù)塊。)當(dāng)數(shù)據(jù)庫實(shí)例206A需要在高速緩存210A中釋放空間時,根據(jù)這里描述的技術(shù),數(shù)據(jù)庫實(shí)例或其處理首先識別能夠從高速緩存210A上去掉的干凈的數(shù)據(jù)塊,其中自干凈的數(shù)據(jù)塊被最后寫到存儲設(shè)備215以來在高速緩存210A中沒有修改干凈的數(shù)據(jù)塊。數(shù)據(jù)庫實(shí)例206A或其處理可以使用任何合適的高速緩存管理機(jī)制以選擇可以從高速緩存上去掉的干凈的數(shù)據(jù)塊;然而應(yīng)當(dāng)注意,根據(jù)這里描述的技術(shù)不選擇臟數(shù)據(jù)塊來消除。如圖2所示,可以以此方式選擇干凈的數(shù)據(jù)塊45和37—用于從高速緩存210A中消除。(應(yīng)當(dāng)注意在圖2中,塊標(biāo)識符“45”、“37”、“56”、“28”、等等,僅僅用于實(shí)例目的;在實(shí)際的實(shí)施方式中,可以以任何合適的方式識別數(shù)據(jù)塊-例如,諸如利用文件ID和塊ID的組合或文件偏移)。
[0059]在選擇用于消除的例如諸如數(shù)據(jù)塊45的數(shù)據(jù)塊之后,數(shù)據(jù)庫實(shí)例206A或其處理從與此數(shù)據(jù)塊對應(yīng)的鎖結(jié)構(gòu)212A中檢索用于此數(shù)據(jù)塊的鎖對應(yīng)物(incarnation)數(shù)目。用于數(shù)據(jù)塊的鎖對應(yīng)物數(shù)目是每次修改數(shù)據(jù)塊遞增的值;因此,用于數(shù)據(jù)塊的鎖對應(yīng)物數(shù)目有效地指示與鎖對應(yīng)物數(shù)目相關(guān)聯(lián)的數(shù)據(jù)塊的副本是否是最近當(dāng)前的。在檢索用于選擇的數(shù)據(jù)塊45的鎖對應(yīng)物數(shù)目之后,數(shù)據(jù)庫實(shí)例206A將此數(shù)據(jù)塊和它的鎖對應(yīng)物數(shù)目發(fā)送到實(shí)例230。實(shí)例230或其處理將數(shù)據(jù)塊45寫到公共高速緩存220中。作為寫操作的一部分,實(shí)例230或其處理也將用于數(shù)據(jù)塊45的鎖對應(yīng)物數(shù)目記錄到與那些數(shù)據(jù)塊相關(guān)聯(lián)的塊元數(shù)據(jù)222中。在成功地提交用于數(shù)據(jù)塊45的寫操作時,實(shí)例230或其處理將用于數(shù)據(jù)塊45的公共高速緩存ID返回到數(shù)據(jù)庫實(shí)例206A。用于數(shù)據(jù)塊45的公共高速緩存ID在公共高速緩存220之內(nèi)唯一地識別數(shù)據(jù)塊45和其記錄在塊元數(shù)據(jù)222中的鎖對應(yīng)物數(shù)目。在接收用于數(shù)據(jù)塊45的公共高速緩存ID時,數(shù)據(jù)庫實(shí)例206A或其處理將公共高速緩存ID記錄到與數(shù)據(jù)塊45相關(guān)聯(lián)的鎖結(jié)構(gòu)212A中然后從私有高速緩存210A中消除數(shù)據(jù)塊45。應(yīng)當(dāng)注意數(shù)據(jù)庫實(shí)例206A在存儲器中存儲用于數(shù)據(jù)塊45的鎖結(jié)構(gòu)212A,即使數(shù)據(jù)塊45已經(jīng)從私有高速緩存2IOA上去掉。
[0060]在稍后時間點(diǎn)處,當(dāng)數(shù)據(jù)庫實(shí)例206A需要訪問數(shù)據(jù)塊45中的數(shù)據(jù)時,數(shù)據(jù)庫實(shí)例或其處理首先檢查以確定數(shù)據(jù)塊是否存儲在公共高速緩存220中。為此,數(shù)據(jù)庫實(shí)例206A或其處理從與數(shù)據(jù)塊45相關(guān)聯(lián)的鎖結(jié)構(gòu)212A中檢索公共高速緩存ID和鎖對應(yīng)物數(shù)目,并且將檢索的公共高速緩存ID和鎖對應(yīng)物數(shù)目發(fā)送到實(shí)例230。實(shí)例230或其處理使用公共高速緩存ID和鎖對應(yīng)物數(shù)目來確定與這些值相關(guān)聯(lián)的數(shù)據(jù)塊是否存儲在公共高速緩存220中。如果確定公共高速緩存存儲與接收的常見高速緩存ID和接收的鎖對應(yīng)物數(shù)目(或較高)相關(guān)聯(lián)的數(shù)據(jù)塊,則實(shí)例230或其處理從公共高速緩存220中檢索此數(shù)據(jù)塊并且將它返回到數(shù)據(jù)庫實(shí)例206A。如果確定公共高速緩存220不存儲與接收的公共高速緩存ID相關(guān)聯(lián)的數(shù)據(jù)塊,或如果接收的鎖對應(yīng)物數(shù)目指示存儲在公共高速緩存220中的數(shù)據(jù)塊是舊的,則實(shí)例230或其處理將高速緩存未中指示返回到數(shù)據(jù)庫實(shí)例206A并且從公共高速緩存220中丟棄與接收的公共高速緩存ID和舊的鎖對應(yīng)物數(shù)目相關(guān)聯(lián)的數(shù)據(jù)塊。在從實(shí)例230中接收到高速緩存未中指示時,數(shù)據(jù)庫實(shí)例206A或其處理繼續(xù)從存儲設(shè)備215中讀取請求的數(shù)據(jù)塊(數(shù)據(jù)塊)。
[0061]根據(jù)這里描述的技術(shù),全部數(shù)據(jù)庫實(shí)例206以如上所述相同的方式處理存儲在它們的對應(yīng)私有高速緩存中的數(shù)據(jù)塊。例如,數(shù)據(jù)庫實(shí)例206A以和它處理數(shù)據(jù)塊45相同的方式處理數(shù)據(jù)塊37。在另一個示例中,數(shù)據(jù)庫實(shí)例206B以和數(shù)據(jù)庫實(shí)例206A處理數(shù)據(jù)塊45相同的方式處理數(shù)據(jù)塊56和28。這保證了多數(shù)據(jù)庫實(shí)例可以使用公共高速緩存220作為存儲干凈的數(shù)據(jù)塊的共享存儲器池。此外,這允許數(shù)據(jù)庫實(shí)例從公共高速緩存220中檢索由不同的數(shù)據(jù)庫實(shí)例存儲在那兒的數(shù)據(jù)塊。例如,假如數(shù)據(jù)庫實(shí)例206A和206B被配置為管理相同的數(shù)據(jù)庫。在此操作情況中,當(dāng)數(shù)據(jù)庫實(shí)例206A需要訪問數(shù)據(jù)塊56中的數(shù)據(jù)時,數(shù)據(jù)庫實(shí)例206A或其處理可以從公共高速緩存220中檢索數(shù)據(jù)塊56而不是從存儲設(shè)備215中檢索此數(shù)據(jù)塊。
[0062]這里描述的技術(shù)的不同實(shí)施例可以使用不同類型的信息以保證數(shù)據(jù)塊的版本或副本將不被從公共高速緩存返回。如到現(xiàn)在為止描述的,數(shù)據(jù)庫實(shí)例在從數(shù)據(jù)庫實(shí)例的私有高速緩存上去掉數(shù)據(jù)塊之后在用于數(shù)據(jù)塊的鎖結(jié)構(gòu)中存儲鎖對應(yīng)物數(shù)目,其中鎖對應(yīng)物數(shù)目通常隨著數(shù)據(jù)塊刷到盤。這保證了如果不同的數(shù)據(jù)庫實(shí)例(管理相同的或不同的計(jì)算設(shè)備上的相同的數(shù)據(jù)庫)從持久存儲設(shè)備中檢索相同的數(shù)據(jù)塊并且修改它,則不同的(例如,較高的)鎖對應(yīng)物數(shù)目將與數(shù)據(jù)塊的最近當(dāng)前的副本相關(guān)聯(lián),從而防止公共高速緩存(或管理它的處理)將存儲在公共高速緩存中的數(shù)據(jù)塊的舊的副本返回到第一數(shù)據(jù)庫實(shí)例。
[0063]在一些實(shí)施例中,除識別已經(jīng)被成功地提交到公共高速緩存的數(shù)據(jù)塊的公共高速緩存ID之外,管理公共高速緩存的處理可以將與數(shù)據(jù)塊相關(guān)聯(lián)的系統(tǒng)變化數(shù)目(SCN)返回到數(shù)據(jù)庫實(shí)例。用于數(shù)據(jù)庫的SCN響應(yīng)于檢查點(diǎn)遞增并且被記錄在持久存儲器中,并且指示在記錄檢查點(diǎn)之前對數(shù)據(jù)庫的數(shù)據(jù)塊做出的全部變化已經(jīng)寫到持久存儲器。因?yàn)橛糜诮o定數(shù)據(jù)庫的SCN的序列對管理數(shù)據(jù)庫的數(shù)據(jù)庫實(shí)例是已知的,因此通過將存儲在公共高速緩存中的數(shù)據(jù)塊的副本與用于數(shù)據(jù)庫的當(dāng)前SCN關(guān)聯(lián),管理公共高速緩存的處理保證數(shù)據(jù)庫實(shí)例不會被發(fā)送來自公共高速緩存的數(shù)據(jù)塊的舊的副本。
[0064]以上述方式,這里描述的技術(shù)解決出現(xiàn)在相同的計(jì)算設(shè)備或主機(jī)上的數(shù)據(jù)庫實(shí)例的多租用部署的上下文中的各種問題(例如,諸如存儲器超供給問題、有限的可分級性、和受限可用性,等等)。具體地,這里描述的技術(shù)允許管理員實(shí)例化或配置在具有僅僅足夠大以容納最大預(yù)期數(shù)目的臟數(shù)據(jù)塊的私有緩沖器高速緩存的計(jì)算設(shè)備上的每個數(shù)據(jù)庫實(shí)例,其避免了當(dāng)多數(shù)據(jù)庫實(shí)例被部署在相同的計(jì)算設(shè)備上時超供給易失性存儲器的問題。計(jì)算設(shè)備上的其余的易失性存儲器(如果計(jì)算設(shè)備是SMP主機(jī)則很可能是大塊)被分配給公共高速緩存。以這樣的方式,數(shù)據(jù)庫實(shí)例在它的私有高速緩存中將具有足夠的空間用于它自己的臟數(shù)據(jù)塊,同時它的干凈的數(shù)據(jù)塊將被存儲在公共高速緩存中。此技術(shù)效果將是爭論中的公共資源(計(jì)算設(shè)備上的易失性存儲器)被有效地并且動態(tài)地在計(jì)算設(shè)備上執(zhí)行的全部數(shù)據(jù)庫實(shí)例之間分享。如果特定的數(shù)據(jù)庫實(shí)例變得更活動并且經(jīng)歷更大的工作量,則此特定的數(shù)據(jù)庫實(shí)例將耗費(fèi)更多的公共高速緩存而不對另一個數(shù)據(jù)庫實(shí)例引起任何不利的可用性影響-其不需要由管理員負(fù)責(zé),但是當(dāng)特定的數(shù)據(jù)庫實(shí)例在經(jīng)歷更大的工作量時最多將需要在一定時段從持久存儲器中取出數(shù)據(jù)塊。另外,通過允許多數(shù)據(jù)庫實(shí)例基于工作量動態(tài)地使用計(jì)算設(shè)備的易失性存儲器的變化的塊,這里描述的技術(shù)允許數(shù)據(jù)庫實(shí)例被部署為真正可分級的群集。
[0065]使用情況:將多個公共高速緩存集成為群集
[0066]在一些操作上下文中,這里描述的用于通用高速緩存管理的技術(shù)提供將被分配在多個計(jì)算設(shè)備上的多個公共高速緩存集成為群集。在此類操作上下文的示例實(shí)施例中,響應(yīng)于接收對數(shù)據(jù)塊的請求并且未能在它的公共高速緩存中找到數(shù)據(jù)塊,管理公共高速緩存的處理確定在群集中的另一個公共高速緩存是否存儲數(shù)據(jù)塊,并且如果是這樣的話,請求來自另一個公共高速緩存中的數(shù)據(jù)塊。此技術(shù)效果將是可以是很大規(guī)模的公共高速緩存群集,其大大地增加在任何給定時間處被配置以在群集的任何給定的公共高速緩存中存儲數(shù)據(jù)塊的任何給定數(shù)據(jù)庫實(shí)例將能在包括群集的至少一個公共高速緩存中找到它需要的數(shù)據(jù)塊的機(jī)會,從而排除需要執(zhí)行I/o操作以取得來自持久存儲器中的此數(shù)據(jù)塊。
[0067]圖3是示出了根據(jù)此類操作上下文的示例實(shí)施例的方框圖;計(jì)算設(shè)備302被通過網(wǎng)絡(luò)(未在圖3中示出)通信地連接。計(jì)算設(shè)備302的每一個可以是被配置有諸如處理器(CPU)、存儲器、存儲控制器、網(wǎng)絡(luò)接口卡等等之類的各種硬件元件的單獨(dú)的機(jī)器主機(jī)或它的葉。
[0068]根據(jù)這里描述的技術(shù),計(jì)算設(shè)備302的每一個包括一個或多個數(shù)據(jù)庫實(shí)例和公共高速緩存實(shí)例,其中公共高速緩存實(shí)例包括分配給公共高速緩存的一部分易失性存儲器和一組被配置以管理公共高速緩存的一個或多個處理。例如,計(jì)算設(shè)備302A包括數(shù)據(jù)庫實(shí)例304A和公共高速緩存實(shí)例306A,并且計(jì)算設(shè)備302B包括數(shù)據(jù)庫實(shí)例304B和公共高速緩存實(shí)例306B。
[0069]在不同的計(jì)算設(shè)備上執(zhí)行的至少一些數(shù)據(jù)庫實(shí)例管理相同的數(shù)據(jù)庫并且被通過SAN或NAS網(wǎng)絡(luò)通信地連接到存儲包括此數(shù)據(jù)庫的數(shù)據(jù)的存儲設(shè)備。例如,如在圖3中示出的,數(shù)據(jù)庫實(shí)例304A-2 (在計(jì)算設(shè)備304A上)和數(shù)據(jù)庫實(shí)例304B-1 (在計(jì)算設(shè)備304B上)管理相同的數(shù)據(jù)庫“DB2”。包括數(shù)據(jù)庫“DB2”的數(shù)據(jù)被跨網(wǎng)絡(luò)300存儲在包括磁盤310A、310B、和310C的存儲設(shè)備310上。應(yīng)當(dāng)注意在圖3中,諸如數(shù)據(jù)庫實(shí)例304A-1 (在計(jì)算設(shè)備304A上)和數(shù)據(jù)庫實(shí)例304B-2 (在計(jì)算設(shè)備304B上)之類的其它數(shù)據(jù)庫實(shí)例可以被配置為管理它的數(shù)據(jù)也被跨網(wǎng)絡(luò)300存儲在存儲設(shè)備310上或在被連接到網(wǎng)絡(luò)300的其它存儲設(shè)備上的數(shù)據(jù)庫。
[0070]根據(jù)這里描述的技術(shù),由計(jì)算設(shè)備302上的公共高速緩存實(shí)例管理的公共高速緩存被組織以在群集中操作。在群集中的公共高速緩存實(shí)例的每一個包括被配置以從群集中的其它公共高速緩存實(shí)例中請求數(shù)據(jù)塊并且響應(yīng)于從那里的請求將數(shù)據(jù)塊發(fā)送到其它公共高速緩存實(shí)例的一個或多個處理。
[0071]作為操作的示例,考慮一種情況,計(jì)算設(shè)備304A上的數(shù)據(jù)庫實(shí)例304A-2需要將特定的數(shù)據(jù)塊(例如,諸如從數(shù)據(jù)文件2中的數(shù)據(jù)塊43)檢索到它的私有高速緩存中。數(shù)據(jù)庫實(shí)例304A-2將對此數(shù)據(jù)塊的請求發(fā)送到它的局部公共高速緩存實(shí)例306A。公共高速緩存實(shí)例306A搜索分配在計(jì)算設(shè)備302A上的公共高速緩存并且確定請求的數(shù)據(jù)塊(例如,從數(shù)據(jù)文件2中的數(shù)據(jù)塊43)沒有存儲在其中。代替將高速緩存未中指示返回到數(shù)據(jù)庫實(shí)例304A-2,公共高速緩存實(shí)例306A將對此數(shù)據(jù)塊的請求發(fā)送到群集中的另一個公共高速緩存實(shí)例。例如,在一些實(shí)施方式中,公共高速緩存實(shí)例306A可以將廣播請求發(fā)送到運(yùn)行管理與數(shù)據(jù)庫實(shí)例304A-2相同的數(shù)據(jù)庫(“DB2”)的數(shù)據(jù)庫實(shí)例的全部計(jì)算設(shè)備;在其它實(shí)施方式中,公共高速緩存實(shí)例306A可以查詢?nèi)杭秶臄?shù)據(jù)目錄以確定群集中的哪個公共高速緩存實(shí)例存儲請求的數(shù)據(jù)塊。假如計(jì)算設(shè)備302B上的公共高速緩存實(shí)例306B在它的公共高速緩存中存儲請求的數(shù)據(jù)塊(例如,來自數(shù)據(jù)文件2中的數(shù)據(jù)塊43),因?yàn)閿?shù)據(jù)庫實(shí)例304B-1 (其管理相同的數(shù)據(jù)庫“DB2”)已經(jīng)將它放置在那里。響應(yīng)于來自于公共高速緩存實(shí)例306A的請求,公共高速緩存實(shí)例306B從它的公共高速緩存中檢索請求的數(shù)據(jù)塊并且將數(shù)據(jù)塊發(fā)送到公共高速緩存實(shí)例306A。響應(yīng)于接收請求的數(shù)據(jù)塊,公共高速緩存實(shí)例306A可以執(zhí)行一些有效性檢查以確定接收的數(shù)據(jù)塊是否是數(shù)據(jù)塊的最近的副本,并且如果是這樣的話,可以將數(shù)據(jù)塊返回到請求它的數(shù)據(jù)庫實(shí)例304A-2。(應(yīng)當(dāng)注意基于特定的實(shí)施方式,公共高速緩存306A可以或可以不將接收的數(shù)據(jù)塊存儲在它的公共高速緩存中;不存儲的一個理由可以基于數(shù)據(jù)庫實(shí)例不久將修改數(shù)據(jù)塊的預(yù)期,從而排除需要在公共高速緩存中存儲不久將臟的數(shù)據(jù)塊。)以這樣的方式,數(shù)據(jù)庫實(shí)例304A-2成功獲得它需要的數(shù)據(jù)塊(例如,從數(shù)據(jù)文件2中的數(shù)據(jù)塊43)而不執(zhí)行任何I/O操作以從存儲設(shè)備310中檢索數(shù)據(jù)塊。
[0072]各種實(shí)施例可以使用適合于在配置在群集中的多個公共高速緩存實(shí)例之間轉(zhuǎn)移數(shù)據(jù)塊的各種數(shù)據(jù)傳輸機(jī)制。基于特定的部署特性,可以通過運(yùn)行公共高速緩存實(shí)例的計(jì)算設(shè)備連接到的一個或多個網(wǎng)絡(luò)、通過計(jì)算設(shè)備之間的點(diǎn)到點(diǎn)的雙向鏈路,和/或通過允許處理間通信的任何其它適當(dāng)?shù)倪B接性樣式部署此類數(shù)據(jù)傳輸機(jī)制。
[0073]在一些實(shí)施例中,在群集中的公共高速緩存實(shí)例可以維護(hù)指示數(shù)據(jù)塊被存儲在公共高速緩存中的全局?jǐn)?shù)據(jù)目錄。例如,每一公共高速緩存實(shí)例可以包括被派有在分布的全局目錄中維護(hù)當(dāng)前映射的任務(wù)的一個或多個處理,所述當(dāng)前映射將數(shù)據(jù)塊標(biāo)識符映射到當(dāng)前存儲由這些數(shù)據(jù)塊標(biāo)識符識別的數(shù)據(jù)塊的公共高速緩存實(shí)例。另外,在這些實(shí)施例中公共高速緩存實(shí)例可以使用將存儲在公共高速緩存中的每個數(shù)據(jù)塊映射到獨(dú)特的群集范圍的ID的全局映射,其中公共高速緩存實(shí)例可以將任何新分配的獨(dú)特的群集范圍的ID向彼此傳播并且使用獨(dú)特的群集范圍的ID從彼此請求數(shù)據(jù)塊。
[0074]在一些部署中,根據(jù)這里描述的技術(shù)的公共高速緩存群集的使用比通過使用常規(guī)方法可能的可用性提供更好的可用性。例如,計(jì)算設(shè)備可以被指定為用于例如,數(shù)據(jù)庫“DB1”的給定數(shù)據(jù)庫的主要主機(jī),并且可以被指定為用于例如數(shù)據(jù)庫“DB2”、“DB3”、等等的一個或多個其它數(shù)據(jù)庫的次要主機(jī)。在此計(jì)算設(shè)備上,管理數(shù)據(jù)庫“DB1”的數(shù)據(jù)庫實(shí)例可以被分配計(jì)算設(shè)備的易失性存儲器的較大的塊用于它的私有高速緩存,同時管理其它數(shù)據(jù)庫(例如,數(shù)據(jù)庫“DB2”、“DB3”、等等)的數(shù)據(jù)庫實(shí)例可以被分配易失性存儲器的較小的塊用于它們的私有高速緩存。這類部署的技術(shù)效果將是,對于每個數(shù)據(jù)庫,主要主機(jī)上的數(shù)據(jù)庫實(shí)例將具有較大的私有高速緩存來存儲來自于那些數(shù)據(jù)庫的數(shù)據(jù)塊,同時一個或多個次要主機(jī)上的一個或多個數(shù)據(jù)庫實(shí)例將具有較小的私有高速緩存來存儲來自于那些數(shù)據(jù)庫的數(shù)據(jù)塊。由于根據(jù)這里描述的技術(shù),主要主機(jī)上的公共高速緩存將存儲來自于數(shù)據(jù)庫的干凈的數(shù)據(jù)塊并且由于數(shù)據(jù)庫的主要主機(jī)和次要主機(jī)上的公共高速緩存集成到群集,因此數(shù)據(jù)庫的可用性被增大,因?yàn)楫?dāng)主要主機(jī)上的數(shù)據(jù)庫實(shí)例故障轉(zhuǎn)移到次要主機(jī)上的數(shù)據(jù)庫實(shí)例時,次要主機(jī)上的公共高速緩存實(shí)例可以從主要主機(jī)上的公共高速緩存中取得用于數(shù)據(jù)庫的干凈的數(shù)據(jù)塊而不需要執(zhí)行代價高的I/o操作并且不需要從次要主機(jī)上運(yùn)行的其它實(shí)例中再提供存儲器。
[0075]通過提供將多個計(jì)算設(shè)備上的多個公共高速緩存集成到群集,這里描述的技術(shù)允許實(shí)現(xiàn)大規(guī)模的數(shù)據(jù)庫實(shí)例的線性可分級性。此外,這里描述的技術(shù)允許通過利用一種部署方案提供更好可用性的更靈活的部署,在該部署方案中,被指定為用于給定數(shù)據(jù)庫的主要主機(jī)的計(jì)算設(shè)備上的數(shù)據(jù)庫實(shí)例與被指定為用于給定數(shù)據(jù)庫的次要主機(jī)的一個或多個其它計(jì)算設(shè)備上的一個或多個其它數(shù)據(jù)庫實(shí)例相比較被不同地配置。
[0076]使用情況:在實(shí)例重新啟動時熱身(warm up)私有高速緩存
[0077]在一些操作上下文中,這里描述的用于通用高速緩存管理的技術(shù)提供當(dāng)數(shù)據(jù)庫實(shí)例重新啟動時數(shù)據(jù)庫實(shí)例的私有高速緩存的高效熱身。
[0078]根據(jù)這里描述的技術(shù),計(jì)算設(shè)備上的公共高速緩存被配置為在公共高速緩存中將這些數(shù)據(jù)塊放置到公共高速緩存中的數(shù)據(jù)庫實(shí)例的重新啟動來存儲數(shù)據(jù)塊。管理公共高速緩存的實(shí)例或其處理可以跨數(shù)據(jù)庫實(shí)例重新啟動保持?jǐn)?shù)據(jù)塊,因?yàn)橛糜跀?shù)據(jù)塊的識別塊數(shù)據(jù)也維護(hù)在公共高速緩存中,由此提供更高的數(shù)據(jù)庫實(shí)例對塊使用的可見性。因此,當(dāng)數(shù)據(jù)庫實(shí)例重新啟動時,數(shù)據(jù)庫實(shí)例可以從公共高速緩存向它的專用高速緩存檢索預(yù)先放在公共高速緩存中的干凈的和當(dāng)前數(shù)據(jù)塊。此技術(shù)效果將是與如果重新啟動的數(shù)據(jù)庫實(shí)例以傳統(tǒng)的方式(其包括只有當(dāng)由客戶端或應(yīng)用請求訪問數(shù)據(jù)塊中的數(shù)據(jù)時才從持久存儲器檢索數(shù)據(jù)塊)填充它的私有高速緩存的情況相比,重新啟動的數(shù)據(jù)庫實(shí)例將更快速地達(dá)到正常操作狀態(tài),因?yàn)橹匦聠拥臄?shù)據(jù)庫實(shí)例不需要執(zhí)行計(jì)算代價高的I/o操作以從持久存儲器中取出數(shù)據(jù)塊。
[0079]例如,在一些實(shí)施例中管理公共高速緩存的實(shí)例或其處理對于存儲在公共高速緩存中的每個數(shù)據(jù)塊維護(hù)鎖對應(yīng)物數(shù)目和/或由使用塊的數(shù)據(jù)庫實(shí)例與那些數(shù)據(jù)塊相關(guān)聯(lián)的SCN。由于鎖對應(yīng)物數(shù)目和/或SCN是存儲在持久存儲器(與運(yùn)行時間屬性對照,諸如OS處理ID,其每當(dāng)數(shù)據(jù)庫實(shí)例重新啟動時就改變)上的持久屬性,因此管理公共高速緩存的實(shí)例具有對由數(shù)據(jù)庫實(shí)例對數(shù)據(jù)塊的使用的更大的可見性。因此,當(dāng)數(shù)據(jù)庫實(shí)例重新啟動時,數(shù)據(jù)庫實(shí)例了解期望什么鎖對應(yīng)物數(shù)目和/或SCN,并且因此數(shù)據(jù)庫實(shí)例可以從具有期望的鎖對應(yīng)物數(shù)目和/或SCN的公共高速緩存中檢索那些數(shù)據(jù)塊,由此保證在重新啟動時數(shù)據(jù)塊的“到期”副本不被讀取到數(shù)據(jù)庫實(shí)例的私有高速緩存。
[0080]此外,通過從公共高速緩存中讀取數(shù)據(jù)塊來重新啟動數(shù)據(jù)庫實(shí)例以熱身它的私有高速緩存的能力對減少當(dāng)群集中的數(shù)據(jù)庫實(shí)例需要經(jīng)歷軟件升級時引起的停工期是非常有用的。在典型的群集部署中,軟件升級是艱難并耗時的任務(wù)。群集的典型的軟件升級包括跨群集中的所有節(jié)點(diǎn)升級數(shù)據(jù)庫實(shí)例和/或處理和其服務(wù)和重新啟動這些實(shí)例和/或處理和其服務(wù)。對于其中許多數(shù)據(jù)庫實(shí)例的私有高速緩存共同地加起來是大尺寸的分布式系統(tǒng)來說,這意味著在軟件升級之后此大尺寸的共同高速緩存需要被熱身以便在短時間提供數(shù)據(jù)庫實(shí)例群集的完全利用率。明顯地,通過利用傳統(tǒng)的方式增加私有高速緩存,群集中的每個數(shù)據(jù)庫實(shí)例需要在被能夠承擔(dān)它的期望的滿工作量之前單獨(dú)地?zé)嵘硭乃接懈咚倬彺妗H欢?,根?jù)這里描述的技術(shù),由軟件升級引起的停工期短得多,因?yàn)槿杭械拿總€數(shù)據(jù)庫實(shí)例可以通過從它的局部公共高速緩存中(和/或從公共高速緩存群集中,如果在分布式系統(tǒng)中的公共高速緩存被配置為群集)讀取數(shù)據(jù)塊來熱身它的私有高速緩存,因?yàn)榫植砍咚倬彺?和/或公共高速緩存群集)很可能存儲由每個單獨(dú)的數(shù)據(jù)庫實(shí)例呈現(xiàn)它的滿工作量所需要的數(shù)據(jù)塊中的大多數(shù)。
[0081]硬件概述
[0082]根據(jù)一個實(shí)施例,由一個或多個專用的計(jì)算設(shè)備實(shí)施這里描述的技術(shù)。專用的計(jì)算設(shè)備可以被硬布線以執(zhí)行技術(shù),或可以包括被持久地編程以執(zhí)行技術(shù)的諸如一個或多個專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)之類的數(shù)字電子設(shè)備,或可以包括被編程以依據(jù)固件、存儲器、其它存儲器中的程序指令執(zhí)行技術(shù)的一個或多個通用的硬件處理器,或組合。此類專用的計(jì)算設(shè)備也可以組合定制硬線邏輯、ASIC、或具有定制編程以實(shí)現(xiàn)技術(shù)的FPGA。專用的計(jì)算設(shè)備可以是SMP機(jī)器、服務(wù)器計(jì)算機(jī)系統(tǒng)、桌上型計(jì)算機(jī)或便攜式計(jì)算機(jī)系統(tǒng)、網(wǎng)絡(luò)基礎(chǔ)設(shè)施設(shè)備、或合并硬線和/或程序邏輯以實(shí)施技術(shù)的任何其它設(shè)備(例如,諸如葉)。
[0083]例如,圖4是示出了在其上可以執(zhí)行這里描述的技術(shù)的實(shí)施例的計(jì)算機(jī)系統(tǒng)400的方框圖。計(jì)算機(jī)系統(tǒng)400包括總線402或用于通信信息的其它通信機(jī)制、和與總線402耦接的用于處理信息的硬件處理器404。硬件處理器404可以是例如通用的微處理器。
[0084]計(jì)算機(jī)系統(tǒng)400也包括耦接到總線402的用于存儲由處理器404執(zhí)行的信息和指令的主存儲器406,諸如隨機(jī)存取存儲器(RAM)或其它動態(tài)存儲設(shè)備(例如,諸如快閃存儲卡)。主存儲器406也可以在執(zhí)行由處理器404執(zhí)行的指令期間用于存儲臨時變量或其它中間信息。當(dāng)存儲在處理器404可訪問的非瞬時的存儲介質(zhì)中時,此類指令將計(jì)算機(jī)系統(tǒng)400提交到被定制以執(zhí)行指令中指定的操作的專用機(jī)器。
[0085]計(jì)算機(jī)系統(tǒng)400還包括只讀存儲器(ROM) 408或耦接到總線402的用于存儲為處理器404的靜態(tài)信息和指令的其它靜態(tài)存儲設(shè)備。諸如磁盤或光盤之類的存儲設(shè)備410被提供并且耦接到總線402以用于存儲信息和指令。
[0086]計(jì)算機(jī)系統(tǒng)400可以經(jīng)由總線402被耦接到用于向計(jì)算機(jī)用戶顯示信息的諸如陰極射線管(CRT)或液晶顯示器(IXD)之類的顯示器412。包括字母數(shù)字的和其它鍵的輸入設(shè)備414被耦接到總線402以用于將信息和命令選擇通信到處理器404。用戶輸入設(shè)備的另一個類型是用于通信方向信息和命令選擇到處理器404并且用于控制顯示器412上的光標(biāo)移動的光標(biāo)控制416,諸如鼠標(biāo)、軌跡球、或光標(biāo)方向鍵。此輸入設(shè)備通常具有兩個軸的自由度,第一軸(例如,X)和第二軸(例如,y),其允許設(shè)備在平面中指定位置。
[0087]計(jì)算機(jī)系統(tǒng)400可以通過利用定制的硬線邏輯、一個或多個ASIC或FPGA、與計(jì)算機(jī)系統(tǒng)結(jié)合以引起或編程計(jì)算機(jī)系統(tǒng)400成為專用機(jī)器的固件和/或程序邏輯來實(shí)施里描述的用于這通用高速緩存管理的技術(shù)。根據(jù)一個實(shí)施例,響應(yīng)于執(zhí)行包含在主存儲器406中的一個或多個指令的一個或多個序列的處理器404由計(jì)算機(jī)系統(tǒng)400執(zhí)行這里的技術(shù)。此類指令可以被從諸如存儲設(shè)備410之類的另一個存儲介質(zhì)讀取到主存儲器406。包含在主存儲器406中的指令序列的運(yùn)行使得處理器404執(zhí)行這里描述的處理步驟。在可替換實(shí)施例中,可以代替軟件指令或與軟件指令結(jié)合使用硬線電路。
[0088]如這里使用的術(shù)語“存儲介質(zhì)”是指存儲引起機(jī)器以特定的方式操作的數(shù)據(jù)和/或指令的任何非瞬時的介質(zhì)。此類存儲介質(zhì)可以包括非易失性介質(zhì)和/或易失性介質(zhì)。非易失性介質(zhì)包括例如光盤或磁盤,諸如存儲設(shè)備410。易失性介質(zhì)包括動態(tài)存儲器,諸如主存儲器406、閃速存儲器,和/或它的組合。存儲介質(zhì)的常見形式包括,例如軟盤、軟磁盤、硬盤、固態(tài)驅(qū)動器、磁帶、或任何其它磁數(shù)據(jù)存儲介質(zhì)、CD-ROM、任何其它光數(shù)據(jù)存儲介質(zhì)、帶有孔模式的任何物理介質(zhì)、RAM、PROM、和EPROM、FLASH-EPROM、NVRAM、任何其它存儲器芯片或盒。
[0089]存儲介質(zhì)與傳輸介質(zhì)不同但是可以被結(jié)合使用。傳輸介質(zhì)參與傳送存儲介質(zhì)之間的信息。例如,傳輸介質(zhì)包括同軸電纜、銅線和光纖,包括包含總線402的布線。傳輸介質(zhì)也可以采取聲波或光波的形式,諸如在放射波和紅外數(shù)據(jù)通信期間生成的那些。
[0090]在將一個或多個指令的一個或多個序列傳送到用于運(yùn)行的處理器404中可以涉及各種形式的介質(zhì)。例如,最初可以在遠(yuǎn)程計(jì)算機(jī)的磁盤或固態(tài)驅(qū)動器上傳送指令。遠(yuǎn)程計(jì)算機(jī)可以將指令加載到它的動態(tài)存儲器中并且利用調(diào)制解調(diào)器通過電話線發(fā)送指令。計(jì)算機(jī)系統(tǒng)400本地的調(diào)制解調(diào)器可以接收關(guān)于電話線的數(shù)據(jù)并且使用紅外發(fā)送器將數(shù)據(jù)轉(zhuǎn)換到紅外信號。紅外檢測器可以接收在紅外信號中攜帶的數(shù)據(jù)并且適當(dāng)?shù)碾娐房梢詫?shù)據(jù)放置在總線402上。總線402將數(shù)據(jù)傳輸?shù)街鞔鎯ζ?06,處理器404從主存儲器406檢索數(shù)據(jù)并執(zhí)行指令。由主存儲器406接收到的指令可以可選地在由處理器404運(yùn)行之前和之后被存儲在存儲設(shè)備410上。
[0091]計(jì)算機(jī)系統(tǒng)400也包括耦接到總線402的通信接口 418。通信接口 418提供耦接到連接到本地網(wǎng)絡(luò)422的網(wǎng)絡(luò)鏈路420的雙向數(shù)據(jù)通信。例如通信接口 418可以是綜合服務(wù)數(shù)字網(wǎng)(ISDN)卡、電纜調(diào)制解調(diào)器、衛(wèi)星調(diào)制解調(diào)器、或提供到對應(yīng)類型的電話線的數(shù)據(jù)通信連接的調(diào)制解調(diào)器。如另一個示例,通信接口 418可以是提供到兼容的LAN的數(shù)據(jù)通信連接的局域網(wǎng)(LAN)卡。也可以執(zhí)行無線鏈路。在任何此類實(shí)施方式中,通信接口 418發(fā)送并接收傳送表示各種類型的信息的數(shù)字?jǐn)?shù)據(jù)流的電的、電磁的或光信號。
[0092]網(wǎng)絡(luò)鏈路420通常通過一個或多個網(wǎng)絡(luò)將數(shù)據(jù)通信提供到其它數(shù)據(jù)設(shè)備。例如,網(wǎng)絡(luò)鏈路420可以提供通過本地網(wǎng)絡(luò)422到主機(jī)計(jì)算機(jī)424或到由互聯(lián)網(wǎng)服務(wù)供應(yīng)商(ISP) 426操作的數(shù)據(jù)裝置的連接。ISP426又通過現(xiàn)在通常被稱為“互聯(lián)網(wǎng)”428的世界范圍的分組數(shù)據(jù)通信網(wǎng)絡(luò)提供數(shù)據(jù)通信業(yè)務(wù)。本地網(wǎng)絡(luò)422和互聯(lián)網(wǎng)428 二者都使用傳送數(shù)字?jǐn)?shù)據(jù)流的電的、電磁的或光的信號。通過各種網(wǎng)絡(luò)的信號和網(wǎng)絡(luò)鏈路420上的并且通過往返于計(jì)算機(jī)系統(tǒng)400的傳送數(shù)字?jǐn)?shù)據(jù)的通信接口 418的信號是傳輸介質(zhì)的示例形式。
[0093]計(jì)算機(jī)系統(tǒng)400可以通過網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路420和通信接口 418發(fā)送消息和接收包括程序代碼的數(shù)據(jù)。在互聯(lián)網(wǎng)示例中,服務(wù)器430可以通過互聯(lián)網(wǎng)428、ISP426、本地網(wǎng)絡(luò)422和通信接口 418發(fā)送用于應(yīng)用程序的請求代碼。
[0094]接收的代碼可以在它被接收時由處理器404執(zhí)行,和/或存儲在存儲設(shè)備410中或其它非易失性存儲器中以用于以后運(yùn)行。
[0095]在上述說明中,已經(jīng)參考可以從實(shí)施方式到實(shí)施方式變化的許多細(xì)節(jié)描述了本發(fā)明的實(shí)施例。因此,說明書和附圖應(yīng)當(dāng)被認(rèn)為是說明性的,而不是限制的意義上的。在包括任何隨后校正的此權(quán)利要求書發(fā)出的特定形式中,本發(fā)明的范圍的唯一和專用的指示符、以及由 申請人:預(yù)期的本發(fā)明的范圍是從此申請發(fā)出的權(quán)利要求書的文字和等效范圍。
【權(quán)利要求】
1.一種方法,包括: 在計(jì)算設(shè)備的易失性存儲器中將第一高速緩存專有地分配到兩個或更多個數(shù)據(jù)處理實(shí)例的第一實(shí)例,其中第一高速緩存被配置為存儲持久地存儲在一個或多個存儲設(shè)備上的第一組數(shù)據(jù)塊的副本; 在計(jì)算設(shè)備的易失性存儲器中將第二高速緩存專有地分配到兩個或更多個數(shù)據(jù)處理實(shí)例的第二實(shí)例,其中第二高速緩存被配置為存儲持久地存儲在一個或多個存儲設(shè)備上的第二組數(shù)據(jù)塊的副本; 在計(jì)算設(shè)備的易失性存儲器中分配公共高速緩存; 第一實(shí)例執(zhí)行以下步驟: 在第一高速緩存中識別自從第一數(shù)據(jù)塊被最后寫到一個或多個存儲設(shè)備以來沒有改變的第一數(shù)據(jù)塊; 使得第一數(shù)據(jù)塊被存儲在公共高速緩存中; 從第一高速緩存中消除第一數(shù)據(jù)塊; 第二實(shí)例執(zhí)行以下步驟: 在第二高速緩存中識別自從第二數(shù)據(jù)塊被最后寫到一個或多個存儲設(shè)備以來而沒有改變的第二數(shù)據(jù)塊; 使得第二數(shù)據(jù)塊被存儲在公共高速緩存中; 從第二高速緩存中消除第二數(shù)據(jù)塊; 在公共高速緩存中維護(hù)包括第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的數(shù)據(jù)塊而不將數(shù)據(jù)塊持久地寫到一個或多個存儲設(shè)備; 其中所述方法由所述計(jì)算設(shè)備執(zhí)行。
2.如權(quán)利要求1所述的方法,其中兩個或更多個數(shù)據(jù)處理實(shí)例是管理存儲在一個或多個存儲設(shè)備上的一個或多個數(shù)據(jù)庫的兩個或更多個數(shù)據(jù)庫實(shí)例。
3.如權(quán)利要求1或2所述的方法,其中分配公共高速緩存包括以下中的一個或多個: 在計(jì)算設(shè)備的物理存儲器中分配公共高速緩存; 在連接到計(jì)算設(shè)備的閃速存儲器上分配公共高速緩存;以及 在計(jì)算設(shè)備的物理存儲器上分配公共高速緩存的第一部分并且在連接到計(jì)算設(shè)備的閃速存儲器上分配公共高速緩存的第二部分。
4.如權(quán)利要求1-3中的任何一個所述的方法,其中維護(hù)公共高速緩存中的數(shù)據(jù)塊包括維護(hù)用于存儲在公共高速緩存中的數(shù)據(jù)塊的每一個的塊識別數(shù)據(jù)。
5.如權(quán)利要求1-4中的任何一個所述的方法,其中維護(hù)公共高速緩存中的數(shù)據(jù)塊包括: 跨第一實(shí)例的重新啟動維護(hù)公共高速緩存中的第一數(shù)據(jù)塊;以及 跨第二實(shí)例的重新啟動維護(hù)公共高速緩存中的第二數(shù)據(jù)塊。
6.如權(quán)利要求1-5中的任何一個所述的方法,還包括: 響應(yīng)于對來自于第一數(shù)據(jù)塊的數(shù)據(jù)的第一請求,第一實(shí)例從公共高速緩存中而不是從一個或多個存儲設(shè)備中檢索第一數(shù)據(jù)塊,并且將第一數(shù)據(jù)塊存儲回到第一高速緩存; 響應(yīng)于對來自于第二數(shù)據(jù)塊的數(shù)據(jù)的第二請求,第二實(shí)例從公共高速緩存中而不是從一個或多個存儲設(shè)備中檢索第二數(shù)據(jù)塊,并且將第二數(shù)據(jù)塊存儲回到第二高速緩存。
7.如權(quán)利要求1-5中的任何一個所述的方法,還包括: 響應(yīng)于對來自于第二數(shù)據(jù)塊的數(shù)據(jù)的請求,第一實(shí)例從公共高速緩存中而不是從一個或多個存儲設(shè)備中檢索第二數(shù)據(jù)塊,并且將第二數(shù)據(jù)塊存儲到第一高速緩存中。
8.如權(quán)利要求1-5中的任何一個所述的方法,還包括: 第一實(shí)例將對第三數(shù)據(jù)塊的請求發(fā)送到管理公共高速緩存的實(shí)例; 所述管理公共高速緩存的實(shí)例執(zhí)行以下步驟: 確定第三數(shù)據(jù)塊沒有存儲在公共高速緩存中; 從在不同的計(jì)算設(shè)備上分配的不同的公共高速緩存中檢索第三數(shù)據(jù)塊;以及 將第三數(shù)據(jù)塊返回到第一實(shí)例。
9.如權(quán)利要求1-5中的任何一個所述的方法,還包括: 第一實(shí)例從公共高速緩存中請求第一數(shù)據(jù)塊; 確定第一數(shù)據(jù)塊不再存儲在公共高速緩存中;以及 從一個或多個存儲設(shè)備中檢索第一數(shù)據(jù)塊,其中檢索第一數(shù)據(jù)塊包括以下中的一個: 第一實(shí)例從一個或多個存儲設(shè)備中檢索第一數(shù)據(jù)塊;或 管理公共高速緩存的實(shí)例從一個或多個存儲設(shè)備中檢索第一數(shù)據(jù)塊并且將第一數(shù)據(jù)塊返回到第一實(shí)例。`
10.如權(quán)利要求1-5中的任何一個所述的方法,還包括: 在第一實(shí)例重新啟動之后,第一實(shí)例通過從公共高速緩存中而不是從一個或多個存儲設(shè)備中檢索至少第一數(shù)據(jù)塊并且將第一數(shù)據(jù)塊存儲回到第一高速緩存中,來熱身第一高速緩存;以及 在第二實(shí)例重新啟動之后,第二實(shí)例通過從公共高速緩存中而不是從一個或多個存儲設(shè)備中檢索至少第二數(shù)據(jù)塊并且將第二數(shù)據(jù)塊存儲回到第二高速緩存中,來熱身第二高速緩存。
11.一種方法,包括: 在計(jì)算設(shè)備的易失性存儲器中將多個高速緩存分配到多個數(shù)據(jù)庫實(shí)例,其中多個高速緩存的每一個被專有地分配給多個數(shù)據(jù)庫實(shí)例中的單獨(dú)一個; 在計(jì)算設(shè)備的易失性存儲器中分配由多個數(shù)據(jù)庫實(shí)例共享的公共高速緩存; 多個數(shù)據(jù)庫實(shí)例中的每個特定數(shù)據(jù)庫實(shí)例執(zhí)行以下步驟: 識別多個高速緩存中的專有地分配給所述特定數(shù)據(jù)庫實(shí)例的特定高速緩存中的特定數(shù)據(jù)塊,其中自從所述特定數(shù)據(jù)塊被最后持久地寫到一個或多個存儲設(shè)備中以來,所述特定數(shù)據(jù)塊在特定高速緩存中沒有被改變; 使得所述特定數(shù)據(jù)塊被存儲在公共高速緩存中; 從所述特定高速緩存中消除所述特定數(shù)據(jù)塊; 在公共高速緩存中維護(hù)包括所述特定數(shù)據(jù)塊的數(shù)據(jù)塊而不將數(shù)據(jù)塊持久地寫到一個或多個存儲設(shè)備; 其中所述方法由計(jì)算設(shè)備執(zhí)行。
12.如權(quán)利要求11所述的方法,其中: 所述特定數(shù)據(jù)庫實(shí)例使得所述特定數(shù)據(jù)塊被存儲在公共高速緩存中包括以下中的一個:所述特定數(shù)據(jù)庫實(shí)例在公共高速緩存中存儲所述特定數(shù)據(jù)塊;或 所述特定數(shù)據(jù)庫實(shí)例將所述特定數(shù)據(jù)塊發(fā)送到管理公共高速緩存的實(shí)例。
13.如權(quán)利要求11所述的方法,其中: 所述特定數(shù)據(jù)庫實(shí)例使得所述特定數(shù)據(jù)塊被存儲在公共高速緩存中包括將所述特定數(shù)據(jù)塊發(fā)送到管理公共高速緩存的實(shí)例;以及 所述管理公共高速緩存的實(shí)例執(zhí)行以下步驟: 在公共高速緩存中存儲所述特定數(shù)據(jù)塊; 將特定標(biāo)識符分配到所述特定數(shù)據(jù)塊,其中所述特定標(biāo)識符唯一地識別公共高速緩存中的所述特定數(shù)據(jù)塊; 將所述特定標(biāo)識符返回到所述特定數(shù)據(jù)庫實(shí)例。
14.如權(quán)利要求13所述的方法,還包括:所述特定數(shù)據(jù)庫實(shí)例在與所述特定數(shù)據(jù)塊相關(guān)聯(lián)的特定鎖結(jié)構(gòu)中存儲所述特定標(biāo)識符。
15.如權(quán)利要求14所述的方法,還包括: 所述特定數(shù)據(jù)庫實(shí)例從公共高速緩存中檢索所述特定數(shù)據(jù)塊并且將所述特定數(shù)據(jù)塊存儲回到所述特定高速緩存,其中檢索所述特定數(shù)據(jù)塊包括將所述特定標(biāo)識符發(fā)送到所述管理公共高速緩存的實(shí)例。
16.一種計(jì)算機(jī)程序,包括當(dāng)由一個或多個處理器執(zhí)行時使得執(zhí)行如前述權(quán)利要求中的任何一個所述的方法的指令。
【文檔編號】G06F17/30GK103493029SQ201280020216
【公開日】2014年1月1日 申請日期:2012年2月24日 優(yōu)先權(quán)日:2011年2月28日
【發(fā)明者】P·V·巴蓋爾, R·龍 申請人:甲骨文國際公司