專利名稱:在頁(yè)級(jí)跟蹤重做完成的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及先于重做階段的數(shù)據(jù)訪問(wèn)的技木。
背景技術(shù):
計(jì)算機(jī)已變得高度集成于工作、家庭、移動(dòng)設(shè)備以及許多其他地方中。計(jì)算機(jī)可快速且有效地處理大量信息。被設(shè)計(jì)成在計(jì)算機(jī)系統(tǒng)上運(yùn)行的軟件應(yīng)用允許用戶執(zhí)行包括商業(yè)應(yīng)用、學(xué)校作業(yè)、娛樂(lè)等等在內(nèi)的各種各樣的功能。軟件 應(yīng)用通常被設(shè)計(jì)成執(zhí)行特定的任務(wù),諸如用于草擬文檔的文字處理器應(yīng)用或者用于發(fā)送、接收和組織電子郵件的電子郵件程序。在許多情況下,軟件應(yīng)用被設(shè)計(jì)為與其他軟件應(yīng)用或其他計(jì)算機(jī)系統(tǒng)交互。例如,因特網(wǎng)用戶可經(jīng)由web瀏覽器與web服務(wù)器進(jìn)行交互。用戶可請(qǐng)求諸如電子郵件的特定服務(wù)并接收與其相對(duì)應(yīng)的數(shù)據(jù)。在一些情況下,web服務(wù)器可從數(shù)據(jù)庫(kù)檢索數(shù)據(jù),以履行用戶的請(qǐng)求。這些數(shù)據(jù)庫(kù)可存儲(chǔ)幾百萬(wàn)用戶的數(shù)據(jù)。因此,數(shù)據(jù)庫(kù)被頻繁地備份,以確保用戶數(shù)據(jù)是安全的。然而,有時(shí)候,數(shù)據(jù)服務(wù)器可發(fā)生故障,并且這些故障可在客戶機(jī)或服務(wù)器事務(wù)正在進(jìn)行時(shí)發(fā)生。隨后要執(zhí)行多個(gè)步驟來(lái)使該數(shù)據(jù)庫(kù)重新在線。在這些步驟正在被執(zhí)行時(shí),用戶不能訪問(wèn)來(lái)自該數(shù)據(jù)庫(kù)的數(shù)據(jù)。
發(fā)明內(nèi)容
在此描述的各實(shí)施例涉及實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn),并涉及確定要在過(guò)渡重做階段期間處理哪些包含未經(jīng)處理事務(wù)的數(shù)據(jù)頁(yè)。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段,該階段掃描數(shù)據(jù)庫(kù)事務(wù)日志并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的頁(yè)的臟頁(yè)表。計(jì)算機(jī)系統(tǒng)在最終重做階段之前從臟頁(yè)表中確定要在過(guò)渡重做階段期間處理哪些頁(yè)。計(jì)算機(jī)系統(tǒng)在到達(dá)最終重做階段之前在過(guò)渡重做階段期間處理所確定的頁(yè),并在系統(tǒng)過(guò)渡重做階段完成后,使以下內(nèi)容可用在過(guò)渡重做階段期間被處理了的那些頁(yè)以及未被調(diào)度為要在最終重做階段期間進(jìn)行處理的那些數(shù)據(jù)庫(kù)頁(yè)。在另ー個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段,該階段掃描數(shù)據(jù)庫(kù)事務(wù)日志并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的頁(yè)的臟頁(yè)表。計(jì)算機(jī)系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)事務(wù)日志以確定哪些優(yōu)先數(shù)據(jù)頁(yè)已在特定時(shí)間段內(nèi)被訪問(wèn)了閾值次數(shù)。計(jì)算機(jī)系統(tǒng)還訪問(wèn)臟頁(yè)表以確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)。計(jì)算機(jī)系統(tǒng)然后在到達(dá)最終重做階段之前在過(guò)渡重做階段期間處理優(yōu)先數(shù)據(jù)頁(yè)和所確定的包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)兩者。提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下具體實(shí)施方式
中進(jìn)ー步描述的ー些概念。本發(fā)明內(nèi)容并非g在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不g在用于幫助確定所要求保護(hù)的主題的范圍。另外的特征和優(yōu)點(diǎn)將在以下的描述中闡述,并且部分可從該描述中顯而易見,或者可以從此處的教示實(shí)踐中習(xí)得。本發(fā)明的特征和優(yōu)點(diǎn)可以通過(guò)在所附權(quán)利要求中特別指出的手段和組合來(lái)實(shí)現(xiàn)并獲取。本發(fā)明的特征將從以下描述和所附權(quán)利要求書中變得完全顯而易見,或者可通過(guò)如下所述對(duì)本發(fā)明的實(shí)踐而獲知。
為了進(jìn)一步闡明本發(fā)明的各實(shí)施例的以上和其他優(yōu)點(diǎn)和特征,將參考附圖來(lái)呈現(xiàn)本發(fā)明的各實(shí)施例的更具體的描述??梢岳斫?,這些附圖只描繪本發(fā)明的典型實(shí)施例,因此將不被認(rèn)為是對(duì)其范圍的限制。本發(fā)明將通過(guò)使用附圖用附加特征和細(xì)節(jié)來(lái)描述和解釋,附圖中圖I示出了在其中本發(fā)明的各實(shí)施例可用于包括實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn)和確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)的計(jì)算機(jī)體系結(jié)構(gòu)。圖2示出了用于實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn)的示例方法的流程圖。
圖3示出了用于確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)的示例方法的流程圖。圖4示出示例數(shù)據(jù)庫(kù)恢復(fù)階段排序的流程圖。
具體實(shí)施例方式在此描述的各實(shí)施例涉及實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn),并涉及確定要在過(guò)渡重做階段處理哪些包含未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段,該分析階段掃描數(shù)據(jù)庫(kù)事務(wù)日志并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的頁(yè)的臟頁(yè)表。計(jì)算機(jī)系統(tǒng)在最終重做階段之前從臟頁(yè)表中確定要在過(guò)渡重做階段期間處理哪些頁(yè)。計(jì)算機(jī)系統(tǒng)在到達(dá)最終重做階段之前在過(guò)渡重做階段期間處理所確定的頁(yè),并在系統(tǒng)過(guò)渡重做階段完成后,使以下內(nèi)容可用在過(guò)渡重做階段期間被處理了的那些頁(yè)以及未被調(diào)度為要在最終重做階段期間進(jìn)行處理的那些數(shù)據(jù)庫(kù)頁(yè)。在另ー個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段,該分析階段掃描數(shù)據(jù)庫(kù)事務(wù)日志并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的頁(yè)的臟頁(yè)表。計(jì)算機(jī)系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)事務(wù)日志以確定哪些優(yōu)先數(shù)據(jù)頁(yè)已在特定時(shí)間段內(nèi)被訪問(wèn)了閾值次數(shù)??稍谶\(yùn)行時(shí)期間確定關(guān)于哪些頁(yè)被頻繁訪問(wèn)的信息,并將該信息記錄在事務(wù)日志中。在崩潰以后,數(shù)據(jù)恢復(fù)過(guò)程可使用日志中的信息來(lái)確定哪些頁(yè)被頻繁地訪問(wèn)。計(jì)算機(jī)系統(tǒng)還訪問(wèn)臟頁(yè)表以確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)。計(jì)算機(jī)系統(tǒng)然后在到達(dá)最終重做階段之前在過(guò)渡重做階段期間處理優(yōu)先數(shù)據(jù)頁(yè)和所確定的包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)兩者。由于各用戶工作量可阻塞(block)在對(duì)這些頁(yè)的重做之后才進(jìn)行,因此包括優(yōu)先(被頻繁訪問(wèn)的)頁(yè)可能是有好處的。以下討論現(xiàn)涉及可以執(zhí)行的多種方法以及方法動(dòng)作。應(yīng)當(dāng)注意,雖然這些方法動(dòng)作可能是按一定次序討論的,或者是在流程圖中被描繪為是按照特定順序進(jìn)行的,然而并非必然需要特定的次序,除非特別聲明,或者是在ー個(gè)動(dòng)作被執(zhí)行之前因?yàn)樵搫?dòng)作依賴于另ー動(dòng)作的完成而需要的情況。本發(fā)明的各實(shí)施例可包括或利用專用或通用計(jì)算機(jī),該專用或通用計(jì)算機(jī)包括諸如例如一個(gè)或多個(gè)處理器和系統(tǒng)存儲(chǔ)器等計(jì)算機(jī)硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實(shí)施例還包括用于承載或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問(wèn)的任何可用介質(zhì)。存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是計(jì)算機(jī)存儲(chǔ)介質(zhì)。承載計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實(shí)施例可包括至少兩種顯著不同的計(jì)算機(jī)可讀介質(zhì)計(jì)算機(jī)存儲(chǔ)介質(zhì)和傳輸介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或可用于存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為允許在計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的ー個(gè)或多個(gè)數(shù)據(jù)鏈路。當(dāng)信息通過(guò)網(wǎng)絡(luò)或另ー個(gè)通信連接(硬連線、無(wú)線、或者硬連線或無(wú)線的組合)傳輸或提供給計(jì)算機(jī)吋,該計(jì)算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的數(shù)據(jù)或所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀 介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計(jì)算機(jī)系統(tǒng)組件之后,計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動(dòng)傳輸?shù)接?jì)算機(jī)存儲(chǔ)介質(zhì)(或反之亦然)。例如,通過(guò)網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收到的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接ロ模塊(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)。因而,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲(chǔ)介質(zhì)可被包括在還利用(或甚至主要利用)傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。計(jì)算機(jī)可執(zhí)行指令包括,例如使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如ニ進(jìn)制代碼、諸如匯編語(yǔ)言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語(yǔ)言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動(dòng)作。相反,上述特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包括個(gè)人計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、尋呼機(jī)、路由器、交換機(jī)等等。本發(fā)明還可在其中通過(guò)網(wǎng)絡(luò)鏈接(或者通過(guò)硬連線數(shù)據(jù)鏈路、無(wú)線數(shù)據(jù)鏈路,或者通過(guò)硬連線和無(wú)線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境(例如,云計(jì)算、云服務(wù)等)中實(shí)踐。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。圖I示出了可在其中采用本發(fā)明的原理的計(jì)算機(jī)體系結(jié)構(gòu)100。計(jì)算機(jī)體系結(jié)構(gòu)100包括數(shù)據(jù)庫(kù)110。數(shù)據(jù)庫(kù)110可以是任何類型的本地或分布式數(shù)據(jù)庫(kù),包括云數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)可以具有ー個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)145,該數(shù)據(jù)存儲(chǔ)145可以位于本地計(jì)算機(jī)系統(tǒng)或者可以分布在多個(gè)計(jì)算機(jī)系統(tǒng)上。數(shù)據(jù)庫(kù)可以被配置為接收來(lái)自各個(gè)計(jì)算機(jī)用戶105的數(shù)據(jù)請(qǐng)求106。數(shù)據(jù)庫(kù)處理該數(shù)據(jù)請(qǐng)求并用數(shù)據(jù)107來(lái)響應(yīng)該用戶。在一些情況下,數(shù)據(jù)庫(kù)可需要從故障恢復(fù)。該故障可以是硬件相關(guān)的或者是軟件相關(guān)的。為了確保向用戶提供精確的、最新的數(shù)據(jù),數(shù)據(jù)庫(kù)啟動(dòng)恢復(fù)階段以合適并完全地從該故障恢復(fù)。數(shù)據(jù)庫(kù)的模塊115可被配置為啟動(dòng)這個(gè)恢復(fù)階段。該恢復(fù)可以是完全恢復(fù)或者可以是從故障轉(zhuǎn)移或備份節(jié)點(diǎn)146的部分恢復(fù)?;謴?fù)階段可以包括和/或啟動(dòng)其他階段。例如,如圖4的數(shù)據(jù)庫(kù)恢復(fù)階段400所示,分析階段410可作為恢復(fù)數(shù)據(jù)庫(kù)時(shí)的初始步驟而被啟動(dòng)。在分析階段期間,數(shù)據(jù)庫(kù)的頁(yè)處理確定模塊120可被配置為查看臟頁(yè)表140以確定哪些數(shù)據(jù)頁(yè)141還沒(méi)有被處理。然后,這些未經(jīng)處理的頁(yè)中的至少ー些可被調(diào)度為要在恢復(fù)的過(guò)渡重做階段415期間進(jìn)行處理。頁(yè)處理確定模塊確定哪些未經(jīng)處理的頁(yè)最重要并將被首先處理。頁(yè)處理模塊可使用各種標(biāo)準(zhǔn)來(lái)確定哪些頁(yè)最重要,如以下將更詳細(xì)解釋的。過(guò)渡重做階段處理模塊125可隨后處理在分析階段410期間被確定為是最重要的那些頁(yè)。過(guò)渡重做階段被實(shí)現(xiàn)在最終重做階段之前。數(shù)據(jù)恢復(fù)階段隨后包括系統(tǒng)事務(wù)重做階段420,該系統(tǒng)事務(wù)重做階段420完成過(guò)渡重做階段中處理的事務(wù)。一旦系統(tǒng)事務(wù)重做階段完成以后,就可向用戶開放該數(shù)據(jù)庫(kù)的大部分(階段425、模塊130)。一旦已向數(shù)據(jù)庫(kù)用戶開放了該數(shù)據(jù)庫(kù)以后,僅仍處于臟頁(yè)表內(nèi)的那些頁(yè)不可被訪問(wèn)。隨后可處理未經(jīng)處理的 頁(yè),并啟動(dòng)最終重做階段430,接著是用戶事務(wù)重做435。在完成了 430和435之后,所有數(shù)據(jù)頁(yè)都可被數(shù)據(jù)庫(kù)用戶使用。下面,分別針對(duì)圖2和圖3的方法200和300,更詳細(xì)地解釋這些概念??紤]到以上描述的系統(tǒng)和體系結(jié)構(gòu),參考圖2和圖3的流程圖將更好地理解根據(jù)所公開的主題實(shí)現(xiàn)的方法。為了解釋簡(jiǎn)明起見,這些方法被示出和描述為一系列框。然而,應(yīng)該理解和了解,所要求保護(hù)的主題不受框的次序的限制,因?yàn)椹`些框可按不同的次序進(jìn)行和/或與此處所描繪和描述的其他框同時(shí)進(jìn)行。此外,并非全部所示的框都是實(shí)現(xiàn)下面所述的方法所必需的。圖2示出了用于實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn)的方法200的流程圖。方法200現(xiàn)在將頻繁地參考環(huán)境100的組件和數(shù)據(jù)以及圖4的元素來(lái)進(jìn)行描述。方法200包括啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段的動(dòng)作,其中該分析階段掃描數(shù)據(jù)庫(kù)事務(wù)日志并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的一個(gè)或多個(gè)頁(yè)的臟頁(yè)表(動(dòng)作210)。例如,數(shù)據(jù)庫(kù)恢復(fù)階段啟動(dòng)模塊115可啟動(dòng)分析階段410。該分析階段可掃描數(shù)據(jù)庫(kù)事務(wù)曰志135并構(gòu)建臟頁(yè)表140,該臟頁(yè)表140包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的各個(gè)頁(yè)或條目141。這些頁(yè)可包括在數(shù)據(jù)庫(kù)崩潰時(shí)正被處理的頁(yè)。隨后將這些頁(yè)考慮在臟頁(yè)表中,并在其他恢復(fù)階段過(guò)程中處理這些頁(yè)。方法200包括在最終重做階段之前從臟頁(yè)表中確定要在過(guò)渡重做階段期間處理哪些頁(yè)的動(dòng)作(動(dòng)作220)。例如,頁(yè)處理確定模塊120可從臟頁(yè)表140中的條目確定要在過(guò)渡重做階段415期間處理哪些頁(yè)。過(guò)渡重做階段可以是在傳統(tǒng)的、最終重作階段430之前發(fā)生的中間重做階段。過(guò)渡重做階段可以比最終重做階段短,并且可以被想成是小重做階段??梢詫⑤^短的過(guò)渡階段與系統(tǒng)事務(wù)重做一起實(shí)現(xiàn),以在整個(gè)最終重做階段和用戶事務(wù)重做完成之前向用戶425開放數(shù)據(jù)庫(kù)因此,可在最終重做階段完成之前在數(shù)據(jù)庫(kù)處接收并處理用戶請(qǐng)求。在一些情況下,可向表示未經(jīng)處理的數(shù)據(jù)事務(wù)的頁(yè)中的每ー個(gè)添加標(biāo)記。該標(biāo)記可指示已標(biāo)記頁(yè)要在過(guò)渡重做階段被處理。在一些實(shí)施例中,事件可被實(shí)例化以等待被標(biāo)記為要在過(guò)渡重做階段期間進(jìn)行處理的已標(biāo)記頁(yè)。可創(chuàng)建包括要在過(guò)渡重做階段期間處理的那些已標(biāo)記頁(yè)的頁(yè)鏈表。方法200包括在到達(dá)最終重做階段之前在過(guò)渡重做階段期間處理所確定的頁(yè)的動(dòng)作(動(dòng)作230)。例如,過(guò)渡重做階段處理模塊125可在過(guò)渡重做階段415期間處理所確定的(已標(biāo)記的)頁(yè)。因此,標(biāo)記要在系統(tǒng)事務(wù)重做內(nèi)處理的頁(yè)及優(yōu)先(被頻繁訪問(wèn)的)頁(yè)以供在過(guò)渡重作階段期間進(jìn)行處理。這些已標(biāo)記頁(yè)被處理以允許在系統(tǒng)事務(wù)重做完成后開放數(shù)據(jù)庫(kù)的其余部分。在一些情況下,被標(biāo)記為要在過(guò)渡重做階段期間進(jìn)行處理的頁(yè)包括在某一時(shí)間段內(nèi)已被訪問(wèn)了閾值次數(shù)的優(yōu)先數(shù)據(jù)頁(yè)。在運(yùn)行時(shí)期間可確定關(guān)于哪些頁(yè)被頻繁訪問(wèn)的信息,并將該信息記錄在事務(wù)日志中。在崩潰以后,數(shù)據(jù)恢復(fù)過(guò)程可使用日志中的信息來(lái)確定哪些頁(yè)被頻繁地訪問(wèn)。因此,可將在給定時(shí)間段內(nèi)被訪問(wèn)了多次的頻繁使用頁(yè)標(biāo)記為要在過(guò)渡重做階段期間進(jìn)行處理。這些被頻繁訪問(wèn)的頁(yè)可包括系統(tǒng)事務(wù)頁(yè)、臟頁(yè)表中列出的頁(yè)、事務(wù)日志、分配映射、較高級(jí)B樹索引和工作量頻繁訪問(wèn)的任何其他頁(yè)。因此,用于標(biāo)記頁(yè)以供過(guò)渡階段處理的標(biāo)準(zhǔn)可包括被頻繁訪問(wèn)的頁(yè)、系統(tǒng)事務(wù)重做所需的頁(yè)以及過(guò)渡階段處理可能需要的其他頁(yè)。方法200包括在系統(tǒng)事務(wù)重做階段完成以后,使以下內(nèi)容可用的動(dòng)作在過(guò)渡重做階段期間被處理了的那些頁(yè)以及未被調(diào)度為要在最終重做階段期間進(jìn)行處理的那些數(shù)據(jù)庫(kù)頁(yè)(動(dòng)作240)。例如,數(shù)據(jù)庫(kù)可用性模塊130可至少使過(guò)渡重做階段期間被處理了的那些頁(yè)對(duì)用戶105可用。模塊130還可使未被調(diào)度為要在最終重做階段期間進(jìn)行處理的那些數(shù)據(jù)庫(kù)頁(yè)對(duì)用戶可用。因此,模塊130可在系統(tǒng)事務(wù)重做階段420完成以后使數(shù)據(jù)庫(kù)110對(duì)用戶可用。一旦使數(shù)據(jù)庫(kù)可用,用戶可訪問(wèn)未被調(diào)度為要在最終重做階段435期間進(jìn)行處理的任何數(shù)據(jù)庫(kù)頁(yè)??梢砸悦恳豁?yè)為基礎(chǔ)來(lái)跟蹤被調(diào)度為要在最終重做階段期間進(jìn)行處理的各頁(yè)。因此,正在最終重做階段中被處理的所請(qǐng)求頁(yè)只是被阻塞直到該所請(qǐng)求頁(yè)為已重做的為止,并且該所請(qǐng)求頁(yè)在最終重做階段完成之前被釋放。被調(diào)度為供最終重做階段處理的這些頁(yè)是用不同的標(biāo)記來(lái)標(biāo)記的,各不同的標(biāo)記專用于標(biāo)識(shí)供最終重作階段處理的頁(yè)。在一些情況下,每ー頁(yè)可在被訪問(wèn)之前被鎖存,使得在最終重做階段期間,如果頁(yè) 正等待被重新處理或者如果最終重做沒(méi)有完成,則用戶請(qǐng)求被阻塞直到最終重做階段完成為止。以這種方式,用戶將被阻止訪問(wèn)非最新的數(shù)據(jù)。如果系統(tǒng)確定頁(yè)不是在臟頁(yè)表中找到的,則系統(tǒng)應(yīng)用鎖存并允許訪問(wèn)該頁(yè)。在一些情況下,鎖可能是用戶事務(wù)重做所必需的,以確保用戶被阻止訪問(wèn)未提交的數(shù)據(jù)。用戶事務(wù)重做階段435可隨后在最終重做階段完成之后被執(zhí)行。此時(shí),整個(gè)數(shù)據(jù)庫(kù)是最新的并且被完全恢復(fù)。圖3示出了用于確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)的方法300的流程圖。現(xiàn)在將頻繁參考環(huán)境100的組件和數(shù)據(jù)來(lái)描述方法300。方法300包括啟動(dòng)對(duì)數(shù)據(jù)庫(kù)恢復(fù)的分析階段的動(dòng)作,其中該分析階段掃描數(shù)據(jù)庫(kù)事務(wù)日志并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的一個(gè)或多個(gè)頁(yè)的臟頁(yè)表(動(dòng)作310)。例如,數(shù)據(jù)庫(kù)恢復(fù)階段啟動(dòng)模塊115可啟動(dòng)分析階段410。如以上所解釋的,該分析階段可掃描數(shù)據(jù)庫(kù)事務(wù)日志135并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的頁(yè)141的臟頁(yè)表140。該分析還可確定哪些頁(yè)正被修改、這些頁(yè)是哪個(gè)事務(wù)的部分、以及哪些頁(yè)是系統(tǒng)事務(wù)重做階段所必需的。方法300包括訪問(wèn)數(shù)據(jù)庫(kù)事務(wù)日志以確定哪些優(yōu)先數(shù)據(jù)頁(yè)在特定時(shí)間段內(nèi)已被訪問(wèn)了閾值次數(shù)的動(dòng)作(動(dòng)作320)。例如,數(shù)據(jù)庫(kù)可訪問(wèn)事務(wù)日志135以確定哪些頁(yè)141已被訪問(wèn)了某一次數(shù)??稍谶\(yùn)行時(shí)期間確定關(guān)于哪些頁(yè)被頻繁訪問(wèn)的信息,并將該信息記錄在事務(wù)日志中。在崩潰以后,數(shù)據(jù)恢復(fù)過(guò)程可使用日志中的信息來(lái)確定哪些頁(yè)被頻繁地訪問(wèn)。指示頁(yè)被頻繁訪問(wèn)的閾值數(shù)可以是可變的且可動(dòng)態(tài)調(diào)整的。因此,在一些情況下,閾值數(shù)可以是較小的,這可能導(dǎo)致較小數(shù)目的頁(yè)是優(yōu)先數(shù)據(jù)頁(yè)(因?yàn)轫?yè)將被訪問(wèn)多于一次的時(shí)間較少)。相反也是正確的。當(dāng)閾值數(shù)較大時(shí)(即,較長(zhǎng)時(shí)間段),可導(dǎo)致較大數(shù)目的頁(yè)是優(yōu)先數(shù)據(jù)頁(yè)(因?yàn)轫?yè)將被訪問(wèn)多于一次的時(shí)間較多)。方法300包括訪問(wèn)臟頁(yè)表以確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)的動(dòng)作(動(dòng)作330)。例如,數(shù)據(jù)庫(kù)110可訪問(wèn)臟頁(yè)表140以確定要在過(guò)渡重做階段415期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)。臟頁(yè)表中的一個(gè)或多個(gè)頁(yè)可被標(biāo)記為要在階段415期間進(jìn)行處理。此外,可創(chuàng)建列出要在過(guò)渡重做階段期間處理的已標(biāo)記頁(yè)的鏈表。這些列表可包括系統(tǒng)事務(wù)重做所必需的頁(yè),或包括在特定時(shí)間段內(nèi)已被訪問(wèn) 了閾值次數(shù)的頁(yè)。方法300包括在到達(dá)最終重做階段之前在過(guò)渡重做階段期間處理優(yōu)先數(shù)據(jù)頁(yè)和所確定的包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)兩者的動(dòng)作(動(dòng)作340)。例如,數(shù)據(jù)庫(kù)可在過(guò)渡重做階段期間處理被標(biāo)記為優(yōu)先數(shù)據(jù)頁(yè)的那些頁(yè)和未經(jīng)處理的事務(wù)頁(yè)兩者。因此這些頁(yè)在達(dá)到最終重做階段之前被處理??墒乖谶^(guò)渡重做階段期間被處理的那些頁(yè)可用,并且在系統(tǒng)事務(wù)重做階段完成后也可使沒(méi)有被調(diào)度為要在最終重做階段期間進(jìn)行處理的那些數(shù)據(jù)庫(kù)頁(yè)可用??蓪?shí)例化各事件,這些事件被配置為等待被標(biāo)記為要在最終重做期間處理的那些頁(yè)。如果用戶事務(wù)嘗試訪問(wèn)最終重做階段尚未完成處理的頁(yè)(即,它不是最新的),則用戶事務(wù)在一事件上等待并不被允許訪問(wèn)該頁(yè)。當(dāng)最終重做完成處理該頁(yè)時(shí),發(fā)信號(hào)通知這個(gè)事件并且允許用戶訪問(wèn)該頁(yè)。每ー頁(yè)可在被訪問(wèn)之前被鎖存,使得在最終重做階段期間,如果頁(yè)正在等待被重新處理或者如果最終重做沒(méi)有完成,則用戶請(qǐng)求被阻塞直到最終重做階段完成處理所請(qǐng)求的頁(yè)為止。因此,提供了實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。此外,提供了確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在所有方面都應(yīng)被認(rèn)為僅是說(shuō)明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.在包括多個(gè)計(jì)算系統(tǒng)的計(jì)算機(jī)聯(lián)網(wǎng)環(huán)境中的包括至少一個(gè)處理器和存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)處,一種用于實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn)的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括 啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段(410)的動(dòng)作,其中所述分析階段掃描數(shù)據(jù)庫(kù)事務(wù)日志(135)并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的一個(gè)或多個(gè)頁(yè)(141)的臟頁(yè)表(140); 在所述最終重做階段(430)之前從所述臟頁(yè)表中確定要在所述過(guò)渡重做階段(415)期間處理哪些頁(yè)的動(dòng)作; 在到達(dá)所述最終重做階段之前在所述過(guò)渡重做階段期間處理所確定的頁(yè)的動(dòng)作;以及 在系統(tǒng)事務(wù)重做階段(420)完成后使以下內(nèi)容可用的動(dòng)作在所述過(guò)渡重做階段期間被處理了的那些頁(yè)以及未被調(diào)度為要在所述最終重做階段期間進(jìn)行處理的那些數(shù)據(jù)庫(kù)頁(yè)。
2.如權(quán)利要求I所述的方法,其特征在于,在頁(yè)級(jí)跟蹤重做完成,使得正在所述最終重做階段中進(jìn)行處理的所請(qǐng)求頁(yè)只是被阻塞直到所述所請(qǐng)求頁(yè)為已重做的為止,并且所述所請(qǐng)求頁(yè)在所述最終重做階段完成之后被釋放。
3.如權(quán)利要求2所述的方法,其特征在于,用戶請(qǐng)求是在所述最終重做階段完成之前在所述數(shù)據(jù)庫(kù)處被接收和處理的。
4.如權(quán)利要求I所述的方法,其特征在于,還包括向與在所述過(guò)渡重做階段期間要處理的各頁(yè)相對(duì)應(yīng)的各臟頁(yè)表?xiàng)l目添加標(biāo)記的動(dòng)作。
5.如權(quán)利要求4所述的方法,其特征在于,還包括實(shí)例化一事件的動(dòng)作,該事件被配置為等待被標(biāo)記為要在所述最終重做階段期間進(jìn)行處理的各臟頁(yè)表頁(yè)。
6.如權(quán)利要求4所述的方法,其特征在于,還包括使用所添加的標(biāo)記來(lái)創(chuàng)建要在所述過(guò)渡重做階段期間處理的頁(yè)的鏈表。
7.如權(quán)利要求I所述的方法,其特征在于,還包括確定哪些頁(yè)是系統(tǒng)事務(wù)重做所必需的。
8.如權(quán)利要求7所述的方法,其特征在于,還包括標(biāo)記要在所述系統(tǒng)事務(wù)重做期間處理的那些頁(yè),其中所述標(biāo)記指示這些頁(yè)要在所述過(guò)渡重做階段中被處理。
9.如權(quán)利要求I所述的方法,其特征在于,所確定的要在所述過(guò)渡重做階段期間處理的頁(yè)包括已被訪問(wèn)了閾值次數(shù)的優(yōu)先數(shù)據(jù)頁(yè)。
10.如權(quán)利要求9所述的方法,其特征在于,所述優(yōu)先數(shù)據(jù)頁(yè)包括以下各項(xiàng)中的至少一項(xiàng)系統(tǒng)事務(wù)頁(yè)、所述臟頁(yè)表中列出的頁(yè)和事務(wù)日志。
11.如權(quán)利要求I所述的方法,其特征在于,每一頁(yè)在被訪問(wèn)之前被鎖存,使得在所述最終重做階段期間,如果頁(yè)正在等待被重新處理或者如果重做沒(méi)有完成,則用戶請(qǐng)求被阻塞直到所述最終重做階段完成處理所請(qǐng)求的頁(yè)為止。
12.一種用于實(shí)現(xiàn)一種方法的計(jì)算機(jī)程序產(chǎn)品,所述方法用于確定在過(guò)渡重做階段期間要處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè),所述計(jì)算機(jī)程序產(chǎn)品包括其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令在被計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí)使得所述計(jì)算系統(tǒng)執(zhí)行所述方法,所述方法包括 啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段(410)的動(dòng)作,其中所述分析階段掃描數(shù)據(jù)庫(kù)事務(wù)日志(135)并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的一個(gè)或多個(gè)頁(yè)(141)的臟頁(yè)(140)表; 訪問(wèn)所述數(shù)據(jù)庫(kù)事務(wù)日志以確定哪些優(yōu)先數(shù)據(jù)頁(yè)已在特定時(shí)間段內(nèi)被訪問(wèn)了閾值次數(shù)的動(dòng)作; 訪問(wèn)所述臟頁(yè)表以確定在所述過(guò)濾重做階段期間要處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)的動(dòng)作(415);以及 在到達(dá)所述最終重做階段(430)之前在所述過(guò)渡重做階段期間處理優(yōu)先數(shù)據(jù)頁(yè)和所確定的包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)兩者的動(dòng)作。
13.如權(quán)利要求12所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,在系統(tǒng)事務(wù)重做階段完成以后,使以下內(nèi)容可用的動(dòng)作在所述過(guò)渡重做階段期間被處理了的那些頁(yè)以及未被調(diào)度來(lái)在所述最終重做階段期間處理的那些數(shù)據(jù)庫(kù)頁(yè)。
14.如權(quán)利要求12所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述頁(yè)中的一個(gè)或多個(gè)被標(biāo)記以供在所述過(guò)渡重做階段期間進(jìn)行處理,并且其中要在所述過(guò)渡重做階段期間處理的經(jīng)標(biāo)記頁(yè)的鏈表被創(chuàng)建。
15.一種計(jì)算機(jī)系統(tǒng),包括 一個(gè)或多個(gè)處理器; 系統(tǒng)存儲(chǔ)器; 其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使得所述計(jì)算系統(tǒng)執(zhí)行一種用于實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn)的方法,所述方法包括 啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段(410)的動(dòng)作,其中所述分析階段掃描數(shù)據(jù)庫(kù)事務(wù)日志(135)并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的一個(gè)或多個(gè)頁(yè)(141)的臟頁(yè)表(140); 訪問(wèn)所述數(shù)據(jù)庫(kù)事務(wù)日志以確定哪些優(yōu)先數(shù)據(jù)頁(yè)已在特定時(shí)間段內(nèi)被訪問(wèn)了閾值次數(shù)的動(dòng)作; 訪問(wèn)所述臟頁(yè)表以確定在所述過(guò)濾重做階段期間要處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)的動(dòng)作(415); 在到達(dá)所述最終重做階段之前在所述過(guò)渡重做階段期間處理優(yōu)先數(shù)據(jù)頁(yè)和所確定的未經(jīng)處理的事務(wù)數(shù)據(jù)頁(yè)兩者的動(dòng)作(430)。
在所述系統(tǒng)事務(wù)重做階段(420)完成以后,使以下內(nèi)容可用的動(dòng)作在所述過(guò)渡重做階段期間處理了的那些頁(yè)以及未被調(diào)度來(lái)在所述最終重做階段期間處理的那些數(shù)據(jù)庫(kù)頁(yè),其中重做完成在頁(yè)級(jí)被跟蹤,使得正在所述最終重做階段中進(jìn)行處理的所請(qǐng)求頁(yè)只是被阻塞直到該所請(qǐng)求頁(yè)為已重做的為止,并且該所請(qǐng)求頁(yè)在所述最終重做階段完成之前被釋放。
全文摘要
本發(fā)明涉及在頁(yè)級(jí)跟蹤重做完成。各實(shí)施例涉及實(shí)現(xiàn)過(guò)渡重做階段以允許先于重做階段的數(shù)據(jù)訪問(wèn),以及涉及確定要在過(guò)渡重做階段期間處理哪些包括未經(jīng)處理的事務(wù)的數(shù)據(jù)頁(yè)。在一實(shí)施例中,計(jì)算機(jī)系統(tǒng)啟動(dòng)數(shù)據(jù)庫(kù)恢復(fù)的分析階段,該階段掃描數(shù)據(jù)庫(kù)事務(wù)日志并構(gòu)建包括與未經(jīng)處理的數(shù)據(jù)事務(wù)相對(duì)應(yīng)的頁(yè)的臟頁(yè)表。計(jì)算機(jī)系統(tǒng)在最終重做階段之前從該臟頁(yè)表中確定要在過(guò)渡重做階段期間處理哪些頁(yè)。計(jì)算機(jī)系統(tǒng)在到達(dá)最終重做階段之前在過(guò)渡重做階段期間處理所確定的頁(yè),并在系統(tǒng)事務(wù)重做階段完成后,使以下內(nèi)容可用在過(guò)渡重做階段期間被處理的那些頁(yè)以及未被調(diào)度為要在最終重做階段期間進(jìn)行處理的那些數(shù)據(jù)庫(kù)頁(yè)。
文檔編號(hào)G06F17/30GK102708143SQ20121007128
公開日2012年10月3日 申請(qǐng)日期2012年3月16日 優(yōu)先權(quán)日2011年3月18日
發(fā)明者H·R·科達(dá)瓦拉, R·D·達(dá)曼卡 申請(qǐng)人:微軟公司