專利名稱:基于陰影分頁的日志段目錄的制作方法
技術(shù)領(lǐng)域:
此處所述主題涉及利用陰影分頁作為數(shù)據(jù)存儲應(yīng)用的部分以提供日志段(logsegment)目錄的技術(shù)。
背景技術(shù):
數(shù)據(jù)庫以同步方式使用日志以將對對應(yīng)數(shù)據(jù)執(zhí)行的操作存儲在日志中,并同時異步地將數(shù)據(jù)寫入相應(yīng)的數(shù)據(jù)區(qū)域。在崩潰或其他數(shù)據(jù)恢復(fù)事件中,數(shù)據(jù)區(qū)域被恢復(fù)到可能的較舊狀態(tài)。重放日志將使得數(shù)據(jù)庫成為最后提交的(commited)狀態(tài)。記錄數(shù)據(jù)典型地存儲在固定大小或大小可變的日志片段上,可以表示為相應(yīng)磁盤上的操作系統(tǒng)文件。每個日志段可以具有相關(guān)元數(shù)據(jù),諸如段中第一和最后條目的日志序列號。元數(shù)據(jù)還可以包括日志段的當(dāng)前狀態(tài),諸如打開、關(guān)閉、自由備份。
發(fā)明內(nèi)容
在一個方面,在數(shù)據(jù)存儲應(yīng)用中開始重放數(shù)據(jù)事務(wù)。描述多個日志段元數(shù)據(jù)的日志段目錄的頁面被加載到內(nèi)存。此后,去除日志段目錄中的冗余頁。然后基于日志段目錄確定:需要訪問哪些日志段。訪問這些日志段以執(zhí)行日志重放。每個日志段的元數(shù)據(jù)可以包括如下的一個或多個:日志段中第一條目和最后條目的日志序列號,以及日志段的當(dāng)前狀態(tài)。日志段目錄可以分成固定大小的或可變大小的頁面。日志段目錄的每個頁面可以包括如下的一個或多個:由頁面尋址的第一日志段的索引、頁面生成值和校驗和值、以及固定數(shù)量的日志段元數(shù)據(jù)。在日志段目錄中去除冗余頁面可包括:去除和另一頁面具有相同索引和正確的校驗和值但具有較低的頁面生成值的頁面。此外,在日志段目錄中去除冗余頁可以包括:去除具有不正確的校驗和值的頁面。所移除的冗余頁面的輔助存儲器上的物理位置可以被放在自由列表數(shù)據(jù)結(jié)構(gòu),用于跟蹤在輔助存儲器上的空閑物理頁??梢孕薷奶囟ㄈ罩径蔚脑獢?shù)據(jù)條目。該修改可以包括:修改內(nèi)存中日志段的元數(shù)據(jù),增加當(dāng)前頁面生成計數(shù)器的值,設(shè)置日志段的頁面生成值為當(dāng)前頁面生成計數(shù)器,將日志段新頁面的新的物理輔助存儲地址分配為取自空閑列表數(shù)據(jù)結(jié)構(gòu)的物理輔助存儲位置,計算日志段的新的校驗和,并向空閑列表數(shù)據(jù)結(jié)構(gòu)添加日志段的舊頁面的之前物理輔助存儲位置。可以響應(yīng)于請求而修改元數(shù)據(jù)以執(zhí)行從包括如下的組中選擇的操作:例如關(guān)閉日志段、打開新的日志段、設(shè)置日志段備份標(biāo)志和標(biāo)記日志段為空閑。在關(guān)聯(lián)方面,日志段目錄的頁面被加載到內(nèi)存中。日志段目錄包含多個日志段的元數(shù)據(jù),以至于日志段目錄的每個頁面包含:由頁面尋址的第一日志段的索引、頁面生成值、校驗和值以及固定數(shù)量的日志段元數(shù)據(jù)。內(nèi)存中第一日志段的元數(shù)據(jù)然后被修改。增加當(dāng)前頁面生成計數(shù)器的值,日志段的頁面生成值被改變?yōu)楫?dāng)前生成計數(shù)器值。日志段的新頁面的新的物理輔助存儲位置被分配到取自空閑列表數(shù)據(jù)結(jié)構(gòu)的物理輔助存儲位置。為日志段計算校驗和。此外,日志段舊頁面的之前物理輔助存儲位置被移動到空閑列表數(shù)據(jù)結(jié)構(gòu)。還描述了制造的產(chǎn)品,其包括在非臨時計算機可讀媒體上永久存儲的計算機可執(zhí)行指令,當(dāng)由計算機執(zhí)行時,使得計算機執(zhí)行此處的操作。類似地,還描述了計算機系統(tǒng),其可包括處理器和耦合到處理器的存儲器。存儲器可暫時或永久存儲一個或多個程序,使得處理器執(zhí)行一個或多個此處所述操作。此外,由方法詳述的操作可以由單個計算系統(tǒng)或分布在兩個或多個計算系統(tǒng)之間的一個或多個數(shù)據(jù)處理器實施。此處所述主題提供了許多優(yōu)點,包括更快的數(shù)據(jù)恢復(fù)過程。例如,使用常規(guī)技術(shù),日志段元數(shù)據(jù)被存儲為日志段內(nèi)明確定義位置(例如,日志段的開始,等等)的頁面。諸如狀態(tài)變化的元數(shù)據(jù)改變需要相應(yīng)地修改頁面。當(dāng)使用這些類型的日志段重新啟動數(shù)據(jù)庫時,首先必須為元數(shù)據(jù)信息掃描(至少部分)所有日志段,這將減緩數(shù)據(jù)恢復(fù)過程。此處所述主題的一個或多個變化的細(xì)節(jié)在附圖和如下描述中提出。此處所述主題的其他特點和優(yōu)勢將從如下描述和附圖以及權(quán)利要求中變得更加明顯。
圖1是示出包括數(shù)據(jù)存儲應(yīng)用的系統(tǒng)的示意圖;圖2是示出使用日志段目錄的數(shù)據(jù)恢復(fù)的處理流程圖;圖3是示出圖1的系統(tǒng)的細(xì)節(jié)的示意圖;以及圖4是示出在日志段目錄中日志段元數(shù)據(jù)修改的示意圖。在不同圖中,相似的附圖標(biāo)記表示相似組件。
具體實施例方式圖1顯示系統(tǒng)100的示例,其中計算系統(tǒng)102 (其可以包含可被配置、在一個或多個網(wǎng)絡(luò)等鏈接的一個或多個可編程處理器)執(zhí)行數(shù)據(jù)存儲應(yīng)用104的一個或多個模塊、軟件組件等。數(shù)據(jù)存儲應(yīng)用104可以包含一個或多個數(shù)據(jù)庫、企業(yè)資源計劃、分布式存儲系統(tǒng)(例如,可從CA桑尼韋爾的NetApp獲得的NetApp文件歸檔器)等。一個或多個模塊、軟件組件等可以訪問計算系統(tǒng)102的本地用戶以及遠(yuǎn)程用戶從一個或多個客戶端機器106經(jīng)過網(wǎng)絡(luò)連接110訪問計算系統(tǒng)102。一個或多個第一個模塊產(chǎn)生的一個或多個用戶界面屏幕可以顯示給用戶,或通過本地顯示器或通過和客戶端機器106之一關(guān)聯(lián)的顯示器。數(shù)據(jù)存儲應(yīng)用104的數(shù)據(jù)單元可以暫時性存儲在持久層112(例如頁面緩沖或其他類型的臨時持久層),它可以以存儲頁的形式例如通過輸入/輸出組件116寫數(shù)據(jù)到一個或多個存儲器114。一個或多個存儲器114可以包括一個或多個物理存儲媒體或設(shè)備(如硬盤驅(qū)動器、持久閃存、隨機存取存儲器、光學(xué)媒體、磁性媒體等),經(jīng)配置寫數(shù)據(jù)以用于較長期的存儲。應(yīng)該注意:存儲器114和輸入/輸出組件116可以包含在計算系統(tǒng)102中,盡管他們在圖1中被顯示為計算系統(tǒng)102的外部。在較長期存儲器114中保留的數(shù)據(jù)可以頁面組織,每個都有分配給它一個限定數(shù)量的存儲空間。在有些實施方式中,分配給每個頁面的存儲空間量可以是常數(shù)和固定的。然而,其他的實施方式中,分配給每個頁面的存儲空間量可以變化,其也在當(dāng)前主題的范圍內(nèi)。圖2是處理流程圖200,其中在210處,啟動數(shù)據(jù)存儲應(yīng)用中的數(shù)據(jù)事務(wù)重放。接下來,在220處,日志段目錄的頁被加載到內(nèi)存中。日志段目錄包含描述多個日志段的元數(shù)據(jù)。在230處,日志段目錄中的冗余頁面被移除。此后,在340處,基于日志段目錄確定哪些日志段部分需要訪問,這樣,在350處,可訪問日志段以使能重放。圖3顯示符合當(dāng)前主題一個或多個特征的軟件架構(gòu)300??梢詫崿F(xiàn)在一個或多個硬件和軟件上的數(shù)據(jù)存儲應(yīng)用104可以包括一個或多個數(shù)據(jù)庫應(yīng)用、網(wǎng)絡(luò)附加存儲系統(tǒng)等。根據(jù)當(dāng)前主題的至少某些實施方式,該數(shù)據(jù)存儲應(yīng)用104可以包括或例如通過持久接口 302與持久層112或其他類型的存儲緩沖器接口連接。持久層112中的頁面緩沖器304可以存儲一個或多個邏輯頁面306,且可選地可以包括陰影頁面、激活頁面等等。保留在持久層112的邏輯頁面306可以通過輸入/輸出組件116寫入到存儲器(如較長期存儲器等)114,它可以是軟件模塊、一個或多個軟件和硬件中實施的子系統(tǒng)等。存儲器114可以包括一個或多個數(shù)據(jù)卷310,可在其中的物理存儲塊處分配存儲的頁面312。在某些實施方式中,數(shù)據(jù)存儲應(yīng)用104可以包含或不同地與頁面管理器314和/或保存點管理器316通信。頁面管理器314可以與持久層112處的頁面管理模塊320通信,持久層112可以包括監(jiān)視頁面狀態(tài)信息324的空閑塊管理器322,例如存儲器114中物理頁面的狀態(tài)和持久層112中(且可選地在頁面緩沖器304中)的邏輯頁面。保存點管理器316可以與持久層204處的保存點協(xié)調(diào)器326通信以處理保存點,用于為可能崩潰后的重啟創(chuàng)建數(shù)據(jù)庫的一致持久狀態(tài)。在數(shù)據(jù)存儲應(yīng)用104的某些實施方式中,持久層112的頁面管理模塊可以實現(xiàn)陰影分頁(paging)。頁面管理模塊320中的空閑塊管理器322可以維持物理頁的狀態(tài)。該頁面緩沖器304可以包括如此處論述操作的固定的頁面狀態(tài)緩沖器。轉(zhuǎn)換器組件340,可以是頁面管理模塊320的部分或與其通信,可以負(fù)責(zé)在寫到存儲器114的邏輯和物理頁面之間的映射。該轉(zhuǎn)換器340可以維持邏輯頁面的當(dāng)前映射到轉(zhuǎn)換器表342中的相應(yīng)物理頁面。該轉(zhuǎn)換器340可以保持邏輯頁面306到一個或多個轉(zhuǎn)換器表342中的相應(yīng)物理頁面的當(dāng)前映射。當(dāng)從存儲器114讀出邏輯頁面306時,要加載的存儲頁面可以使用轉(zhuǎn)換器340從一個或多個轉(zhuǎn)換器表342中查詢。當(dāng)保存點之后邏輯頁面第一次寫入存儲器114時,新的空閑物理頁被分配給該邏輯頁面??臻e塊管理器322將新物理頁標(biāo)記為“使用”,而新的映射被存儲在一個或多個轉(zhuǎn)換器表342中。持久層112可以確保:數(shù)據(jù)存儲應(yīng)用104中做出的更改是持久的以及數(shù)據(jù)存儲應(yīng)用104可以恢復(fù)到重新啟動后最近提交狀態(tài)。將數(shù)據(jù)寫入存儲器114不需要與寫事務(wù)的結(jié)束同步。因此,未提交的更改可以寫入磁盤,以及當(dāng)寫事務(wù)完成時已提交的更改可還沒有被寫入到磁盤。系統(tǒng)崩潰后,還沒有完成的事務(wù)進行的改變可以回滾(roll back)。已提交的事務(wù)發(fā)生的變化不應(yīng)該在該過程中丟失。記錄器(logger)組件344還可以包括在線性日志中對數(shù)據(jù)存儲應(yīng)用的數(shù)據(jù)進行的更改。記錄器組件344可以應(yīng)用在恢復(fù)期間以從最后保存點重放操作,確保在恢復(fù)過程結(jié)束時回滾到仍打開的事務(wù)之前,所有操作被應(yīng)用到數(shù)據(jù)以及具有記錄“提交”記錄的事務(wù)被提交。使用一些數(shù)據(jù)存儲應(yīng)用,將數(shù)據(jù)寫入磁盤不一定與寫事務(wù)的結(jié)束同步。情況可能發(fā)生在未提交的更改寫入磁盤時,同時,當(dāng)寫事務(wù)完成時已提交的更改還沒有寫到磁盤上。系統(tǒng)崩潰后,由未完成事務(wù)做出的改變必須回滾,以及由提交事務(wù)做出的改變必須不丟失。為了確保已提交的更改不會丟失,無論何時進行改變,重做日志信息可以由記錄器組件344寫入。最遲當(dāng)事務(wù)結(jié)束時該信息可以寫入磁盤。日志條目可以被保存在單獨日志卷,而一般數(shù)據(jù)被寫入數(shù)據(jù)卷。使用重做日志,即使相應(yīng)的數(shù)據(jù)頁沒有寫入磁盤,已提交的更改也可以恢復(fù)。對于取消未提交的更改,持久層112可以使用撤銷日志條目(來自一個或多個日志)和陰影分頁的組合。持久接口 302可以處理存儲器(例如,內(nèi)存中的存儲等)讀寫請求。持久接口 302還可以提供寫的方法,用于寫入具有日志和不具有日志的數(shù)據(jù)。如果使用日志寫操作,則持久接口 302啟動記錄器344。此外,記錄器344提供接口,允許存儲器(例如,內(nèi)存中的存儲等)直接添加日志條目到日志隊列。記錄器接口還提供方法來請求內(nèi)存中日志隊列的日志條目涌入(flush)到磁盤。日志條目包含日志序列號,日志條目的類型和事務(wù)的標(biāo)識符。根據(jù)操作類型,附加信息被記錄器344記錄。例如對于類型“更新”的條目,這將是受影響記錄和修改后的圖像數(shù)據(jù)的識別。當(dāng)數(shù)據(jù)應(yīng)用104重新啟動時,需要處理日志條目。為了加快該過程,重做日志并不總是從開始處理。相反,如上所述,可以定期執(zhí)行保存點,自從上個保存點做出寫入到磁盤的所有改變(例如,在內(nèi)存中,等等)。當(dāng)啟動系統(tǒng)時,只有上個存儲點之后創(chuàng)建的日志需要被處理。在接下來的備份操作之后,可以移除存儲點位置之前的舊日志條目。當(dāng)啟動記錄器344寫入日志條目時,它不立即寫入到磁盤。相反,它可以把日志條目放到內(nèi)存中的日志隊列中。日志隊列中的條目可以最遲當(dāng)相應(yīng)事務(wù)完成(提交或中止)時寫入磁盤。為了保證已提交的更改不會丟失,相應(yīng)的日志條目涌入到磁盤之前,提交操作并不成功結(jié)束。將日志隊列條目寫入磁盤也可能由其他事件觸發(fā),例如當(dāng)日志隊列頁面滿時或當(dāng)執(zhí)行保存點時。使用當(dāng)前主題,記錄器344可以將數(shù)據(jù)庫日志(或者此處僅僅是指一個“日志”)以自然順序(例如,依次等)連續(xù)寫入內(nèi)存緩沖器中。數(shù)據(jù)庫日志可以經(jīng)過分段,以至于它包括多個日志段。在這種情況下,記錄器344可以另外生成和保持日志段目錄。日志段目錄可以為日志段目錄中的每個日志段保持元數(shù)據(jù)。該元數(shù)據(jù)例如可以包括:該段中的第一和最后條目的日志序列號以及描述日志段的當(dāng)前狀態(tài)(例如,打開,關(guān)閉、備份、空閑等等)的數(shù)據(jù)。日志段目錄可以分成固定大小的頁,其是多個極小的(atomic)I/O單元(B卩,底層硬件的扇區(qū)大小)。每個這樣的頁面可以包含日志段的固定數(shù)量的元數(shù)據(jù)信息。每個頁面的元數(shù)據(jù)信息的數(shù)量可以計算為metadata_per_page = (page_size_ (page_header)的大小)/(元數(shù)據(jù))的大小。每個頁面都可以具有包含以下信息的標(biāo)題:(i)由該頁面尋址的第一日志段的索引(對應(yīng)該日志段的頁面中的第一元數(shù)據(jù)),這自然是metadata_per_page的倍數(shù);(ii)頁面生成值(其可基于增加的頁面生成計數(shù)器);以及(iii)校驗和值。為了尋址η個日志段的最大值,至少需要page_count = (n+metadata_per_page-1) /metadata_per_page頁面。這將對應(yīng)于零冗余以及原則上當(dāng)日志段目錄的一頁覆蓋在所有情況下是極小時會生效。然而,由于各種原因,覆蓋的一頁不能保證是極小的。因此,冗余是必要的。通過添加至少一個額外的/冗余頁到日志段目錄(即,日志段目錄不僅僅包含page_count頁,等等)而添加冗余。
現(xiàn)在,當(dāng)日志段目錄打開時,日志段目錄的所有頁可以被加載到內(nèi)存中。因為有比需要更多的頁面,所以具有相同索引值的一個或多個頁面出現(xiàn)在日志段目錄中。在這種情況下,具有最高的頁面生成值和正確校驗和值的頁面將被挑選出,而具有相同索引的其他頁面(例如,陰影頁面等)將被丟棄,而在日志段目錄中他們的物理位置將被放置到空閑列表數(shù)據(jù)結(jié)構(gòu)(其中包含日志段目錄中的當(dāng)前空閑頁面的物理位置)。之后當(dāng)前頁面生成計數(shù)器可被設(shè)置為所有頁面生成的最大值。當(dāng)請求日志段目錄執(zhí)行操作時,諸如關(guān)閉日志段、打開新的日志段、設(shè)置日志段備份標(biāo)志或標(biāo)記日志段為空閑,則對應(yīng)日志段的元數(shù)據(jù)條目需要修改和保存。參照圖4的處理流程圖400,執(zhí)行以下操作。首先,在410處修改日志段的元數(shù)據(jù)。之后在420處增加當(dāng)前頁面生成計數(shù)器,日志段的頁面生成值在430處被設(shè)置為當(dāng)前頁計數(shù)器值。隨后,在440處,從用于內(nèi)存分配的空閑列表數(shù)據(jù)結(jié)構(gòu)獲得日志段修改頁面的新物理輔助存儲位置。然后在450處計算日志段的新校驗和。日志段的修改后的頁面之后在460處被寫入到新的物理輔助存儲位置(正如之前從空閑列表數(shù)據(jù)結(jié)構(gòu)獲取)。此外,在470處,日志段之前頁面版本的舊物理輔助存儲位置可被移動到空閑列表數(shù)據(jù)結(jié)構(gòu)。如果定義幾個陰影頁面,則可以并行完成日志段目錄上的幾個操作(假設(shè)他們尋址不同的頁),并且也可以并行執(zhí)行適當(dāng)?shù)耐絀/o操作,用以增加吞吐量。如果操作由于停電或數(shù)據(jù)庫崩潰失敗,則該操作寫入的頁面只被部分寫入。在下次運行讀取日志段目錄期間,這個不完整的頁面將被忽略,并被認(rèn)為是陰影頁。該頁面的舊版本(由于它在操作之前在開始執(zhí)行的日志段目錄上)仍出現(xiàn)在某些其他物理位置上的日志段目錄中(即能夠易于恢復(fù)日志段目錄)。此處所述主題的各方面可以在根據(jù)所需配置的系統(tǒng)、裝置、方法和/或產(chǎn)品中實施。特別是,此處所述主題各種各樣的實施方式可以實現(xiàn)在數(shù)字電子電路、集成電路、專用集成電路(ASIC)、計算機硬件、固件、軟件和/或其組合中。這些不同的實現(xiàn)可以包括在可編程系統(tǒng)上可執(zhí)行和/或可解釋的一個或多個計算機程序上的實現(xiàn),所述可編程系統(tǒng)包括至少一個可編程處理器,其可以是專用的或通用的,其耦合以從存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備接收數(shù)據(jù)和指令并向存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備傳送數(shù)據(jù)和指令。這些計算機程序(也可以稱為程序、軟件、軟件應(yīng)用程序、應(yīng)用程序、組件或代碼)包括用于可編程處理器的機器指令,可用高級程序和/或面向?qū)ο蟮木幊陶Z言和/或匯編/機器語言實現(xiàn)。如此處所用,術(shù)語“機器可讀介質(zhì)”是指任何計算機程序產(chǎn)品、裝置和/或設(shè)備,例如磁盤,光盤、存儲器和可編程邏輯器件(PLD),用于提供機器指令和/或數(shù)據(jù)到可編程處理器,其包括接收機器指令作為機器可讀信號的機器可讀介質(zhì)。術(shù)語“機器可讀信號”是指用于向可編程處理器提供機器指令和/或數(shù)據(jù)的任何信號。該機器可讀介質(zhì)可以存儲這種非暫時的機器指令,例如非瞬態(tài)固態(tài)存儲器或磁硬盤驅(qū)動或任何等價的存儲介質(zhì)。該機器可讀介質(zhì)可以以瞬態(tài)方式選擇性地或另外存儲這種機器指令,例如處理器高速緩存或與一個或多個物理處理器核相關(guān)聯(lián)的其他隨機存取存儲器。此處所述的主題可以實現(xiàn)在包括后端組件的計算系統(tǒng)中,例如一個或多個數(shù)據(jù)服務(wù)器,或者實現(xiàn)在包含中間件組件的計算系統(tǒng)中,例如一個或多個應(yīng)用程序服務(wù)器,或者實現(xiàn)在包括前端組件的計算系統(tǒng)中,例如具有圖形用戶界面或Web瀏覽器的一個或多個客戶端計算機,用戶可以通過其與此處所述主題的實施方式交互,或?qū)崿F(xiàn)在這種后端,中間件或前端組件的任何組合中。客戶端和服務(wù)器通常是但不限于彼此遠(yuǎn)離,并典型地通過通信網(wǎng)絡(luò)交互,盡管系統(tǒng)組件可以數(shù)字?jǐn)?shù)據(jù)通信的任何形式或介質(zhì)互相聯(lián)系。通訊網(wǎng)絡(luò)的例子包括但不限于局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)和互聯(lián)網(wǎng)。由于運行在各自電腦上的計算機程序并彼此具有客戶機-服務(wù)器的關(guān)系而出現(xiàn)了客戶機和服務(wù)器之間的關(guān)系。以上描述所提出的實施方式并不代表符合此處所述主題的所有實施方式。相反,他們僅僅是符合與所述主題相關(guān)的方面的一些例子。盡管已在此詳細(xì)分析一些變化,但其他的修改或添加的內(nèi)容都是可能的。特別是,除了此處所提出的,可以提供進一步的特性和/或變化。例如,上面描述的實施方式可以指向公開特征的各種組合和子組合,和/或此處公開的進一步的一個或更多特性的組合和子組合。此外,附圖和/或此處所述的邏輯流不一定需要顯示的特定順序或連續(xù)的順序來獲得理想的結(jié)果。如下權(quán)利要求的范圍可包括其他實施方式或?qū)嵤├?br>
權(quán)利要求
1.包括存儲指令的非臨時機器可讀介質(zhì)的計算機程序產(chǎn)品,存儲的指令當(dāng)由至少一個可編程處理器執(zhí)行時,導(dǎo)致至少一個可編程處理器執(zhí)行操作,包括: 啟動數(shù)據(jù)存儲應(yīng)用中的數(shù)據(jù)事務(wù)的重放; 將日志段目錄的頁面加載到內(nèi)存中,所述日志段目錄描述多個日志段的元數(shù)據(jù); 去除在日志段目錄中的冗余頁面; 基于日志段目錄確定哪些日志段需要訪問;以及 訪問需要訪問的日志段以執(zhí)行日志重放。
2.如權(quán)利要求1所述的計算機程序產(chǎn)品,其中每個日志段中的元數(shù)據(jù)包括:日志段中第一條目和最后條目的日志序列號,以及日志段的當(dāng)前狀態(tài)。
3.如權(quán)利要求1所述的計算機程序產(chǎn)品,其中日志段目錄分成固定大小的頁面。
4.如權(quán)利要求1所述的計算機程序產(chǎn)品,其中日志段目錄的每個頁面包含:由頁面尋址的第一日志段的索引、頁面生成值和校驗和值以及固定數(shù)量的日志段元數(shù)據(jù)。
5.如權(quán)利要求4所述的計算機程序產(chǎn)品,其中去除在日志段目錄中的冗余頁面包括:去除和另一頁面具有相同索引和正確校驗和值但具有較低頁面生成值的頁面。
6.如權(quán)利要求5所述的計算機程序產(chǎn)品,其中去除在日志段目錄中的冗余頁面包括:去除具有不正確校驗和值的頁面。
7.如權(quán)利要求所述I的計算機程序產(chǎn)品,其中去除冗余頁面的輔助存儲器的物理位置被置于空閑列表數(shù)據(jù)結(jié)構(gòu),用來跟蹤輔助存儲器上的空閑物理頁。
8.如權(quán)利要求 4所述的計算機程序產(chǎn)品,其中操作進一步包括:修改特定的日志段元數(shù)據(jù)條目。
9.如權(quán)利要求8所述的計算機程序產(chǎn)品,其中修改日志段的元數(shù)據(jù)條目包括: 修改存儲中日志段的元數(shù)據(jù); 增加當(dāng)前頁面生成計數(shù)器的值; 設(shè)置日志段的頁面生成值為當(dāng)前生成計數(shù)器值; 分配日志段新頁面的新的物理輔助存儲位置為取自空閑列表數(shù)據(jù)結(jié)構(gòu)的物理輔助存儲位置; 計算日志段的新校驗和; 將修改后的頁面寫入到新的物理輔助存儲位置;以及 添加日志段的舊頁面的之前物理輔助存儲位置到空閑列表數(shù)據(jù)結(jié)構(gòu)。
10.如權(quán)利要求8所述的計算機程序產(chǎn)品,其中響應(yīng)于執(zhí)行選自包括如下的組的操作的請求,該元數(shù)據(jù)被修改:關(guān)閉日志段、打開新日志段、設(shè)置日志段備份標(biāo)志和標(biāo)記日志段為空閑。
11.一種方法,包括: 啟動數(shù)據(jù)存儲應(yīng)用中數(shù)據(jù)事務(wù)的重放; 加載日志段目錄的頁面到內(nèi)存中,日志段目錄描述多個日志段的元數(shù)據(jù); 去除日志段目錄中的冗余頁面; 基于日志段目錄確定哪些日志段需要訪問;以及 訪問需要訪問的日志段以執(zhí)行日志重放。
12.如權(quán)利要求11所述的方法,其中每個日志段中的元數(shù)據(jù)包括:日志段中第一條目和最后條目的日志序列號,以及日志段的當(dāng)前狀態(tài)。
13.如權(quán)利要求11所述的方法,其中日志段目錄分成固定大小的頁面。
14.如權(quán)利要求11所述的方法,其中日志段目錄的每個頁面包含:由頁面尋址的第一日志段的索引、頁面生成值和校驗和值以及固定數(shù)量的日志段元數(shù)據(jù)。
15.如權(quán)利要求14所述的方法,其中在日志段目錄中去除冗余頁面包括:去除和另一頁面具有相同索引和正確的校驗和值但是具有較低的頁面生成值的頁面。
16.如權(quán)利要求15所述的方法,其中在日志段目錄中去除冗余頁面包括:去除具有不正確校驗和值的頁面。
17.如權(quán)利要求11所述的方法,其中去除冗余頁面的輔助存儲器的物理位置被置于空閑列表數(shù)據(jù)結(jié)構(gòu),用來跟蹤輔助存儲器上的空閑物理頁。
18.如權(quán)利要求14所述的方法,還包括修改特定日志段的元數(shù)據(jù)條目;其中響應(yīng)執(zhí)行選自包括如下的組的操作的請求,該元數(shù)據(jù)被修改:關(guān)閉日志段、打開新日志段、設(shè)置日志段備份標(biāo)志和標(biāo)記日志段為空閑。
19.如權(quán)利要求18所述的方法,其中修改日志段的元數(shù)據(jù)條目包括: 修改內(nèi)存中日志段的元數(shù)據(jù); 增加當(dāng)前頁面生成計數(shù)器的值; 設(shè)置日志段的頁面生成值為當(dāng)前生成計數(shù)器值; 分配日志段的新頁 面的新的物理輔助存儲位置為取自空閑列表數(shù)據(jù)結(jié)構(gòu)的物理輔助存儲位置; 計算日志段的新校驗和; 將修改后的頁面寫入到新的物理輔助存儲位置;以及 將日志段的舊頁面的之前物理輔助存儲位置添加到空閑列表數(shù)據(jù)結(jié)構(gòu)。
20.包括存儲指令的非臨時機器可讀介質(zhì)的計算機程序產(chǎn)品,存儲的指令當(dāng)由至少一個可編程處理器執(zhí)行時,導(dǎo)致至少一個可編程處理器執(zhí)行操作,包括: 加載日志段目錄的頁面到內(nèi)存中,日志段目錄包括多個日志段的元數(shù)據(jù),其中日志段目錄的每個頁面包含:由頁面尋址的第一日志段的索引、頁面生成值、校驗和值以及固定數(shù)量的日志段元數(shù)據(jù); 修改內(nèi)存中第一日志段的元數(shù)據(jù); 增加第一日志段的當(dāng)前頁面生成計數(shù)器的值; 設(shè)置日志段的頁面生成值為當(dāng)前生成計數(shù)器值; 分配日志段的新頁面的新的物理輔助存儲位置為取自空閑列表數(shù)據(jù)結(jié)構(gòu)的物理輔助存儲位置; 計算日志段的新校驗和; 將修改后的頁面寫入到新的物理輔助存儲位置;以及 將日志段的舊頁面的之前物理輔助存儲位置添加到空閑列表數(shù)據(jù)結(jié)構(gòu)。
全文摘要
在數(shù)據(jù)存儲應(yīng)用中啟動數(shù)據(jù)事務(wù)的重放。將描述多個日志段的元數(shù)據(jù)的日志段目錄的頁面加載到內(nèi)存中。此后,去除在日志目錄中的冗余頁面。然后基于日志段目錄確定需要訪問哪些日志部分。這些日志段經(jīng)訪問以執(zhí)行日志重放。還描述了相關(guān)設(shè)備、系統(tǒng)、技術(shù)和產(chǎn)品。
文檔編號G06F11/14GK103198088SQ20121043336
公開日2013年7月10日 申請日期2012年9月28日 優(yōu)先權(quán)日2011年11月7日
發(fā)明者I·施賴特 申請人:Sap股份公司