国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多功能存儲器內(nèi)數(shù)據(jù)庫恢復(fù)的制作方法

      文檔序號:6437547閱讀:239來源:國知局

      專利名稱::多功能存儲器內(nèi)數(shù)據(jù)庫恢復(fù)的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及數(shù)據(jù)庫系統(tǒng)中的恢復(fù),更具體地涉及用于多功能數(shù)據(jù)庫系統(tǒng)恢復(fù)的日志記錄過程和提交過程。
      背景技術(shù)
      :數(shù)據(jù)庫系統(tǒng)可實(shí)現(xiàn)各種機(jī)制以確保在數(shù)據(jù)庫系統(tǒng)上執(zhí)行的事務(wù)產(chǎn)生正確的結(jié)果。例如,數(shù)據(jù)庫系統(tǒng)可以其他合適的方式實(shí)現(xiàn)并發(fā)控制機(jī)制以使多個(gè)并發(fā)執(zhí)行的事務(wù)相互隔離和/或防止這些事務(wù)相互干擾。作為另一示例,數(shù)據(jù)庫系統(tǒng)可實(shí)現(xiàn)用于確保與數(shù)據(jù)庫系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)項(xiàng)的一致性和/或恢復(fù)的一種或多種機(jī)制。數(shù)據(jù)庫恢復(fù)子系統(tǒng)(舊)管理對相關(guān)聯(lián)的數(shù)據(jù)庫系統(tǒng)內(nèi)所執(zhí)行的各個(gè)操作的記錄,這進(jìn)而便于鏡像數(shù)據(jù)庫系統(tǒng)、在系統(tǒng)崩潰或其他故障的情況下的恢復(fù)與數(shù)據(jù)庫系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)項(xiàng)、和/或增強(qiáng)相關(guān)聯(lián)的數(shù)據(jù)庫系統(tǒng)的彈性和穩(wěn)健性的其他手段。在各個(gè)數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)中,操作主要在一個(gè)或多個(gè)基于盤的數(shù)據(jù)存儲或其他類似存儲介質(zhì)中進(jìn)行,并且RS可參考與操作相關(guān)聯(lián)的數(shù)據(jù)存儲內(nèi)的物理位置來將這些操作進(jìn)行日志記錄。例如,數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)存儲可被分成頁面或其他合適的存儲單元,并且影響一個(gè)或多個(gè)頁面的操作可與操作所影響的頁面一起由RS進(jìn)行日志記錄。在一些情況下,諸如特定頁面內(nèi)的行位置或存儲地址之類的精細(xì)物理位置信息可與相關(guān)頁面身份一起被日志記錄。另外,RS可在檢查點(diǎn)操作(checkpointing)時(shí)獲得一個(gè)或多個(gè)頁面的物理檢查點(diǎn),這些物理檢查點(diǎn)指示存儲在經(jīng)檢查點(diǎn)操作的頁面中的數(shù)據(jù)。隨后,在因系統(tǒng)崩潰或故障和/或其他原因發(fā)起對數(shù)據(jù)庫系統(tǒng)的重建的情況下,可通過將系統(tǒng)中的各頁面還原到一個(gè)或多個(gè)檢查點(diǎn)所指示的狀態(tài)來重建數(shù)據(jù)庫系統(tǒng)。另外,可重建在創(chuàng)建檢查點(diǎn)之后所作出的對一個(gè)或多個(gè)頁面或其他物理數(shù)據(jù)位置的改變,如RS所維護(hù)的操作的日志所指示的。然而,對于諸如被設(shè)計(jì)成主要在存儲器內(nèi)操作的數(shù)據(jù)庫系統(tǒng)(例如,不是如上所述的主要在盤上(on-disk)的數(shù)據(jù)庫系統(tǒng))之類的一些數(shù)據(jù)庫系統(tǒng),為了使相關(guān)聯(lián)的RS適應(yīng)對所實(shí)現(xiàn)的特定數(shù)據(jù)庫系統(tǒng)的需要,各種設(shè)計(jì)考慮是合乎需要的。例如,對于一些數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn),RS實(shí)現(xiàn)允許增強(qiáng)的多功能性、并行化、與其他數(shù)據(jù)庫系統(tǒng)和/或其他系統(tǒng)集成、鏡像能力等是合乎需要的。當(dāng)今的數(shù)據(jù)庫恢復(fù)技術(shù)的以上描述僅僅旨在提供常規(guī)系統(tǒng)的概覽,而不旨在是窮盡的。其他常規(guī)系統(tǒng)以及在本文中所述的各非限制性實(shí)施例的對應(yīng)益處可在審閱以下描述后變得更顯而易見。
      發(fā)明內(nèi)容此處提供了簡化概述以幫助能夠?qū)σ韵赂敿?xì)的描述和附圖中的示例性、非限制性實(shí)施例的各方面有基本或大體的理解。然而,本
      發(fā)明內(nèi)容并不旨在作為詳盡的或窮盡的。相反,本節(jié)
      發(fā)明內(nèi)容的唯一目的在于,以簡化的形式提出與一些示例性、非限制性實(shí)施例相關(guān)的一些概念,作為以下各實(shí)施例的更詳細(xì)的描述的序言。4在一個(gè)或多個(gè)實(shí)施例中,可以如在本文中所述的各種方式管理與數(shù)據(jù)庫系統(tǒng)相關(guān)聯(lián)的恢復(fù)子系統(tǒng),從而便于存儲器內(nèi)(in-memory)數(shù)據(jù)庫系統(tǒng)和/或其他合適的數(shù)據(jù)庫系統(tǒng)內(nèi)的多功能的和高度功能性的日志記錄和恢復(fù)。本文中的各個(gè)實(shí)施例提供多功能性以允許RS滿足對崩潰恢復(fù)、高可用性(HA)(例如,鏡像)、備份/還原、以及其他合適功能的需要。另外,本文中的各實(shí)施例提供了并行化,從而在沒有可預(yù)測排序的一些情況下允許RS從多個(gè)日志流和/或多個(gè)HA連接并發(fā)地接收恢復(fù)信息。此外,本文中的一些實(shí)施例便于與現(xiàn)有二階提交協(xié)議集成的RS設(shè)計(jì),由此允許相關(guān)聯(lián)的數(shù)據(jù)庫系統(tǒng)與一個(gè)或多個(gè)外部數(shù)據(jù)庫系統(tǒng)和/或其他系統(tǒng)之間的互操作(inter-operation)。另外,本文中的一些實(shí)施例定義經(jīng)鏡像數(shù)據(jù)庫節(jié)點(diǎn)可另外用作可讀副節(jié)點(diǎn)的可見性規(guī)則和/或其他機(jī)制。在一個(gè)實(shí)施例中,經(jīng)由邏輯日志記錄實(shí)現(xiàn)部分或全部的上述設(shè)計(jì)考慮,其中對數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)操作的各個(gè)事務(wù)在無需參考數(shù)據(jù)的位置或任何其他物理信息的情況下被日志記錄。在另一實(shí)施例中,在不使用緩沖池的情況下處理數(shù)據(jù)庫事務(wù)。結(jié)果,在無需將“廢”數(shù)據(jù)寫入盤并且無需存儲撤銷信息和/或與轉(zhuǎn)換事務(wù)相關(guān)的其他信息的情況下管理數(shù)據(jù)庫事務(wù)。在如上所述的所維護(hù)的邏輯日志內(nèi),與數(shù)據(jù)庫事務(wù)相關(guān)的信息被記錄在單個(gè)日志記錄中。日志記錄可被配置成攜帶關(guān)于單個(gè)事務(wù)的信息,或者在替換實(shí)施例中,多個(gè)事務(wù)可被歸組到一個(gè)日志記錄中。在日志記錄內(nèi),各個(gè)字段可提供開始時(shí)間戳和結(jié)束時(shí)間戳和/或指示其中對應(yīng)事務(wù)活動的時(shí)間段的其他信息。這些信息可形成邏輯檢查點(diǎn)操作系統(tǒng)的基礎(chǔ),其中可在無需參考事務(wù)操作的物理位置的情況下,通過以事務(wù)的開始時(shí)間戳和結(jié)束時(shí)間戳所指定的次序重復(fù)記錄在各個(gè)日志條目中的事務(wù)來重建數(shù)據(jù)庫系統(tǒng)的狀態(tài)。通過以此方式消除對物理檢查點(diǎn)信息的依賴性,可在包括副節(jié)點(diǎn)的各個(gè)相關(guān)聯(lián)的數(shù)據(jù)庫節(jié)點(diǎn)處獨(dú)立于這些節(jié)點(diǎn)的存儲配置或輸入/輸出(I/O)能力來構(gòu)建或重建數(shù)據(jù)庫。在本文中的一些實(shí)施例中,可通過實(shí)現(xiàn)部分檢查點(diǎn)、差分檢查點(diǎn)和/或其他技術(shù)來減小檢查點(diǎn)大小。除實(shí)現(xiàn)邏輯檢查點(diǎn)操作以外,如以上所提供的日志記錄結(jié)構(gòu)允許經(jīng)由多個(gè)獨(dú)立的日志流來進(jìn)行數(shù)據(jù)庫系統(tǒng)的日志記錄,每個(gè)日志流可被分配給不同的I/O設(shè)備等以增加效率、使用更優(yōu)化的資源等。在一些情況下,實(shí)現(xiàn)多個(gè)日志流的RS可合并、拆分、或以其他方式操縱日志流以使改變適應(yīng)疊加操作環(huán)境、與各個(gè)日志流相關(guān)聯(lián)的一個(gè)或多個(gè)I/O設(shè)備的故障、或其他情形。另外,通過合并、拆分、或以其他方式操縱日志流集,數(shù)據(jù)庫系統(tǒng)可計(jì)及鏡像節(jié)點(diǎn)處的不同幾何形狀;例如,鏡像節(jié)點(diǎn)可接收關(guān)于日志流集的恢復(fù)信息并且調(diào)整日志流以適應(yīng)局部系統(tǒng)配置。在本文中的其他實(shí)施例中,存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)可充分利用如上所述的邏輯日志記錄以在不使用提前寫入日志記錄的情況下管理對數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)進(jìn)行操作的事務(wù)。例如,可限制存儲器內(nèi)通過事務(wù)修改的數(shù)據(jù)向盤的寫入,直到事務(wù)已經(jīng)提交并且已經(jīng)記錄在日志記錄中之后。此外,如上所述,撤銷信息和/或與逆轉(zhuǎn)事務(wù)相關(guān)的其他信息可在提交事務(wù)之后被丟棄。另外,本文中的各實(shí)施例提供了事務(wù)可分多個(gè)階段提交的分層提交過程。首先,通過加固與恢復(fù)數(shù)據(jù)庫系統(tǒng)中的事務(wù)相關(guān)聯(lián)的信息來物理地提交事務(wù)。其次,通過在整個(gè)系統(tǒng)存儲器施加事務(wù)所作出的改變來邏輯地提交事務(wù)。再次,通過使事務(wù)的結(jié)果對數(shù)據(jù)庫系統(tǒng)外部的實(shí)體可見來可見地提交事務(wù)。在一個(gè)實(shí)施例中,該分層提交過程可用于將多個(gè)數(shù)5據(jù)庫系統(tǒng)集成到表面上單一的數(shù)據(jù)庫系統(tǒng)中,由此以透明方式向數(shù)據(jù)庫用戶提供多個(gè)數(shù)據(jù)庫系統(tǒng)的益處和功能。這些和其他實(shí)施例在下文中更詳細(xì)地描述。參考附圖進(jìn)一步描述各非限制性實(shí)施例,在附圖中圖1示出數(shù)據(jù)庫中的事務(wù)的示例性生存期的說明性概覽;圖2示出數(shù)據(jù)庫恢復(fù)子系統(tǒng)所維護(hù)的日志流的示例性集的說明性視圖;圖3是示例性日志結(jié)構(gòu)的說明性視圖;圖4是關(guān)于數(shù)據(jù)庫事務(wù)所使用的提交階段的說明性視圖;圖5是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)事務(wù)管理和恢復(fù)機(jī)制的數(shù)據(jù)庫系統(tǒng)的框圖;圖6是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的日志流管理機(jī)制的示例性功能的框圖;圖7是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)日志流管理機(jī)制的數(shù)據(jù)庫鏡像節(jié)點(diǎn)的框圖;圖8是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的數(shù)據(jù)庫系統(tǒng)集成機(jī)制的示例性功能的框圖;圖9是示出用于管理存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)中的恢復(fù)子系統(tǒng)的示例性、非限制性過程的流程圖;圖10是示出用于維護(hù)關(guān)于數(shù)據(jù)庫事務(wù)的數(shù)據(jù)庫恢復(fù)信息的示例性、非限制性過程的另一流程圖;圖11是示出用于在副節(jié)點(diǎn)處維護(hù)數(shù)據(jù)庫系統(tǒng)的示例性、非限制性過程的又一流程圖;圖12是示例性數(shù)據(jù)庫檢查點(diǎn)操作方案的說明性視圖;圖13是示例性差分檢查點(diǎn)操作技術(shù)的說明性視圖;圖14是另一示例性差分檢查點(diǎn)操作技術(shù)的說明性視圖;圖15是表示其中可實(shí)現(xiàn)在本文中所述的各實(shí)施例的示例性、非限制性聯(lián)網(wǎng)環(huán)境的框圖;以及圖16是表示其中可實(shí)現(xiàn)在本文中所述的各實(shí)施例的一個(gè)或多個(gè)方面的示例性、非限制性計(jì)算系統(tǒng)或操作環(huán)境的框圖。具體實(shí)施例方式概覽作為介紹,數(shù)據(jù)庫系統(tǒng)可通過諸如但不限于數(shù)據(jù)創(chuàng)建和維護(hù)、信息檢索、經(jīng)由搜索或其他機(jī)制的數(shù)據(jù)訪問等操作來便于對各個(gè)相關(guān)聯(lián)的數(shù)據(jù)項(xiàng)的管理。在某些實(shí)施例中,數(shù)據(jù)庫系統(tǒng)可提供各種機(jī)制來確保相關(guān)聯(lián)數(shù)據(jù)的可恢復(fù)性和完整性。例如,數(shù)據(jù)庫系統(tǒng)可管理在系統(tǒng)內(nèi)執(zhí)行的(例如,與數(shù)據(jù)庫系統(tǒng)所執(zhí)行的各個(gè)事務(wù)相關(guān)聯(lián)的)操作以確保這些操作產(chǎn)生正確的結(jié)果。作為示例而非限制,數(shù)據(jù)庫系統(tǒng)可結(jié)合并發(fā)控制機(jī)制以確保數(shù)據(jù)庫系統(tǒng)所并發(fā)執(zhí)行的各個(gè)事務(wù)不相互干擾。另外,數(shù)據(jù)庫系統(tǒng)可結(jié)合各種其他機(jī)制以確保正確的操作。作為非限制性示例,數(shù)據(jù)庫系統(tǒng)可使用確保與系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)的一致性、完整性6和/或可恢復(fù)性的各種機(jī)制。在一個(gè)示例中,數(shù)據(jù)庫系統(tǒng)可用于管理存儲在至少一個(gè)數(shù)據(jù)存儲中的信息。作為示例而非限制,存儲器內(nèi)數(shù)據(jù)庫可被設(shè)計(jì)并且實(shí)現(xiàn)為管理存儲在對應(yīng)的計(jì)算機(jī)存儲器或任何其他合適的非瞬態(tài)計(jì)算機(jī)存儲介質(zhì)中的數(shù)據(jù)。存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)的各非限制性實(shí)施例、或者可用于提供類似功能的其他數(shù)據(jù)庫系統(tǒng)一般可提供關(guān)于相關(guān)聯(lián)數(shù)據(jù)存儲的低級功能。這些功能可包括,例如,支持事務(wù)和/或查找、光標(biāo)等。另外,這些數(shù)據(jù)庫系統(tǒng)可直接地或間接地通過與提供這些功能的一個(gè)或多個(gè)不同的系統(tǒng)的協(xié)作來提供對各個(gè)更高級功能的支持??捎蓴?shù)據(jù)庫系統(tǒng)直接地或間接地支持的更高級功能的示例包括但不限于,相關(guān)聯(lián)用戶界面的生成或控制、對基于各種查詢語言的查詢的支持(例如,美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)/國際標(biāo)準(zhǔn)組織(ISO)結(jié)構(gòu)化查詢語言(SQL)、Xquery等)等。另外,數(shù)據(jù)庫系統(tǒng)可實(shí)現(xiàn)恢復(fù)系統(tǒng)(RS)和/或其他機(jī)制,這些其他機(jī)制被配置成在系統(tǒng)崩潰、數(shù)據(jù)存儲設(shè)備故障的情況和/或與數(shù)據(jù)庫系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)的恢復(fù)是合乎需要的其他情況下保存結(jié)合數(shù)據(jù)庫系統(tǒng)所存儲的信息。一般而言,RS經(jīng)由將對數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)所執(zhí)行的各個(gè)操作的日志記錄、數(shù)據(jù)存儲設(shè)備鏡像和冗余、檢查點(diǎn)操作以及其他合適的技術(shù)提供數(shù)據(jù)庫系統(tǒng)的彈性。諸如采用如本領(lǐng)域公知的用于恢復(fù)和隔離開發(fā)語義的算法(ARIES)的基于盤的數(shù)據(jù)庫系統(tǒng)之類的一些數(shù)據(jù)庫系統(tǒng)和/或可采用如本領(lǐng)域已知的其他合適恢復(fù)技術(shù)的其他常規(guī)數(shù)據(jù)庫系統(tǒng)使用物理日志記錄來記錄對數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)執(zhí)行的操作。在物理日志記錄方案中,數(shù)據(jù)庫系統(tǒng)內(nèi)所修改的數(shù)據(jù)與數(shù)據(jù)的物理位置一起被記錄。物理日志記錄的變體是混合物理-邏輯日志記錄、或“生理”日志記錄,其中維護(hù)結(jié)構(gòu)化索引,該結(jié)構(gòu)化索引包含與盤上的各頁面和/或相關(guān)聯(lián)數(shù)據(jù)存儲的其他合適單元直接或間接相對應(yīng)的索引記錄。在對與一個(gè)或多個(gè)頁面相對應(yīng)的數(shù)據(jù)進(jìn)行操作(例如,插入數(shù)據(jù)、刪除數(shù)據(jù)等)之后,使用適當(dāng)?shù)乃饕涗泚砩刹⑶宜饕甘驹摬僮骱驮摬僮魉绊懙奈锢眄撁娴娜罩居涗洝T谌缟纤龅奈锢砘蛏砣罩居涗浖夹g(shù)或其他合適的日志記錄技術(shù)中,向日志記錄分配與在數(shù)據(jù)存儲內(nèi)執(zhí)行對應(yīng)操作的次序相對應(yīng)的序列。因此,這種系統(tǒng)中的日志記錄包括序列信息、頁面信息(或其他位置信息)、以及事務(wù)信息。與如上所述的常規(guī)數(shù)據(jù)庫系統(tǒng)相反,各個(gè)其他數(shù)據(jù)庫系統(tǒng)展示了使恢復(fù)子系統(tǒng)設(shè)計(jì)的上述方面無效或不適用的特性。作為示例,存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)可被配置成主要在存儲器內(nèi)(例如,不是盤上數(shù)據(jù)存儲)操作。因此,參考物理頁面、盤位置和/或主要與盤上數(shù)據(jù)存儲相關(guān)的其他信息來記錄數(shù)據(jù)庫事務(wù)的數(shù)據(jù)庫日志記錄機(jī)制提供了對這種數(shù)據(jù)庫系統(tǒng)的最小化利用。除上述內(nèi)容以外,一些存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)和/或其他合適數(shù)據(jù)庫系統(tǒng)內(nèi)所實(shí)現(xiàn)的恢復(fù)系統(tǒng)可具有各個(gè)期望的特征,至少一些特征在傳統(tǒng)恢復(fù)子系統(tǒng)設(shè)計(jì)中未予以考慮。例如,可期望恢復(fù)子系統(tǒng)提供多功能性以滿足對崩潰恢復(fù)、高可用性(HA)或鏡像和備份/還原的需要。另外,可期望恢復(fù)子系統(tǒng)實(shí)現(xiàn)并行化,從而在沒有可預(yù)測排序的一些情況下允許恢復(fù)信息從多個(gè)日志流或多個(gè)HA連接并發(fā)地到達(dá)。此外,可期望恢復(fù)子系統(tǒng)與現(xiàn)有二階段提交協(xié)議集成。在一個(gè)實(shí)施例中,該集成可使數(shù)據(jù)庫系統(tǒng)能與一個(gè)或多個(gè)數(shù)據(jù)庫系統(tǒng)互操作,如在本文中進(jìn)一步所述的。另外,可期望如在本文中所述的恢復(fù)子系統(tǒng)通過例如定義可見性規(guī)則來實(shí)現(xiàn)可讀鏡像,以使鏡像節(jié)點(diǎn)還可用作可讀副節(jié)點(diǎn)。7在這點(diǎn)上,在如本文中所闡述的各實(shí)施例中,提出了數(shù)據(jù)庫恢復(fù)管理方案,這些數(shù)據(jù)庫恢復(fù)管理方案提出了現(xiàn)有方案的至少上述限制。另外,在本文中提供了恢復(fù)方案的其他益處??梢岳斫猓缭诒疚闹兴龅母鲗?shí)施例的益處僅僅旨在作為經(jīng)由使用這些實(shí)施例來實(shí)現(xiàn)的益處的非限制性示例。此外,本文中所提供的各個(gè)方案不旨在關(guān)于所闡明益處中的任一個(gè)和/或可從這些方案中實(shí)現(xiàn)的任何其他益處而被視為優(yōu)于彼此。在一個(gè)實(shí)施例中,數(shù)據(jù)庫管理系統(tǒng)包括日志管理器組件,該日志管理器組件被配置成以邏輯日志記錄格式生成與對至少一個(gè)數(shù)據(jù)存儲中的數(shù)據(jù)進(jìn)行操作的事務(wù)相關(guān)的一個(gè)或多個(gè)日志記錄。在這種系統(tǒng)中,與逆轉(zhuǎn)事務(wù)相關(guān)的信息(例如,撤銷信息)響應(yīng)于提交事務(wù)被丟棄。系統(tǒng)可包括被配置成存儲與各個(gè)事務(wù)相對應(yīng)的信息的至少一個(gè)持久數(shù)據(jù)存儲,并且在這種示例中,系統(tǒng)可另外包括被配置成防止將對應(yīng)于一個(gè)或多個(gè)未提交事務(wù)的數(shù)據(jù)寫入至少一個(gè)持久數(shù)據(jù)存儲的組件。日志管理器組件還可被配置成在一個(gè)或多個(gè)日志記錄中記錄對至少一個(gè)數(shù)據(jù)存儲中的數(shù)據(jù)進(jìn)行操作的多個(gè)事務(wù)。此外,日志管理器組件可包括被配置成維護(hù)一個(gè)或多個(gè)日志流的日志流管理組件,這些日志流與各個(gè)日志記錄相關(guān)聯(lián)。日志管理器組件還可被配置成至少部分地通過合并日志流或拆分日志流來對日志流進(jìn)行重組。在一些實(shí)現(xiàn)中,日志流管理組件還被配置成以并行方式加載多個(gè)日志流。另外地或替換地,日志管理器組件還被配置成便于將與多個(gè)日志流相對應(yīng)的各個(gè)數(shù)據(jù)庫行以并行方式插入與至少一個(gè)數(shù)據(jù)存儲相對應(yīng)的索引。日志管理器組件還可被配置成在對應(yīng)日志記錄中記錄事務(wù)的開始時(shí)間和事務(wù)的結(jié)束時(shí)間。基于該日志記錄結(jié)構(gòu),該系統(tǒng)還可包括恢復(fù)組件,該恢復(fù)組件被配置成至少部分地通過以基于如在其各個(gè)日志記錄中所記錄的事務(wù)的開始時(shí)間和結(jié)束時(shí)間所確定的次序施加經(jīng)由各個(gè)日志記錄所記錄的事務(wù)來重建至少一個(gè)數(shù)據(jù)存儲的操作狀態(tài)。系統(tǒng)可另外包括被配置成將日志管理組件的各個(gè)事務(wù)日志記錄與至少一個(gè)不同的數(shù)據(jù)庫系統(tǒng)的各個(gè)日志記錄集成的恢復(fù)子系統(tǒng)集成組件。在這樣做時(shí),系統(tǒng)創(chuàng)建公共日志的外觀,該公共日志包括日志管理組件的事務(wù)日志記錄和至少一個(gè)不同的數(shù)據(jù)庫系統(tǒng)的事務(wù)日志記錄。日志管理器組件可包括被配置成在無需參考至少一個(gè)數(shù)據(jù)存儲中的各個(gè)物理位置的情況下生成指示至少一個(gè)相關(guān)聯(lián)數(shù)據(jù)存儲的狀態(tài)的至少一個(gè)檢查點(diǎn)的檢查點(diǎn)操作組件。在一些實(shí)施例中,檢查點(diǎn)操作組件被進(jìn)一步配置成生成分別指示至少一個(gè)數(shù)據(jù)存儲的各個(gè)指定部分的狀態(tài)的經(jīng)劃分檢查點(diǎn)集。替換地,檢查點(diǎn)操作組件可被進(jìn)一步配置成生成指示至少一個(gè)數(shù)據(jù)存儲中的各個(gè)數(shù)據(jù)的狀態(tài)的至少一個(gè)差分檢查點(diǎn),該檢查點(diǎn)從前一檢查點(diǎn)起已作了修改。在其他實(shí)現(xiàn)中,檢查點(diǎn)操作組件被進(jìn)一步配置成發(fā)起與經(jīng)由日志管理器組件加載日志并行的檢查點(diǎn)加載。系統(tǒng)還可包括事務(wù)處理組件,該事務(wù)處理組件被配置成經(jīng)由其中與事務(wù)相對應(yīng)的恢復(fù)信息被持久地記錄的物理提交、其中事務(wù)所引起的至少一個(gè)數(shù)據(jù)存儲中的數(shù)據(jù)的變化對至少一個(gè)數(shù)據(jù)存儲內(nèi)的其他事務(wù)是可見的邏輯提交、以及其中使事務(wù)的結(jié)果對至少一個(gè)數(shù)據(jù)存儲外部的實(shí)體可用的可見提交來提交事務(wù)。在另一實(shí)施例中,一種用于維護(hù)數(shù)據(jù)庫恢復(fù)系統(tǒng)的方法包括接收與對至少一個(gè)8存儲器內(nèi)數(shù)據(jù)存儲中的數(shù)據(jù)進(jìn)行操作的事務(wù)相關(guān)的信息;根據(jù)邏輯日志記錄格式在一個(gè)或多個(gè)日志記錄中將事務(wù)日志記錄;響應(yīng)于提交事務(wù),丟棄與事務(wù)相關(guān)的逆轉(zhuǎn)信息;以及防止將對應(yīng)于一個(gè)或多個(gè)未提交事務(wù)的數(shù)據(jù)寫入至少一個(gè)對應(yīng)的持久數(shù)據(jù)存儲。在一些實(shí)現(xiàn)中,日志記錄可包括在無需參考事務(wù)操作的數(shù)據(jù)存儲中的數(shù)據(jù)的位置的情況下將事務(wù)日志記錄。該方法還可包括維護(hù)多個(gè)日志流,在此情況下日志記錄可另外包括使用從多個(gè)日志流選擇的日志流來將事務(wù)日志記錄。在這種實(shí)現(xiàn)中,該維護(hù)包括將各個(gè)輸入/輸出設(shè)備分配給多個(gè)日志流中的各個(gè)日志流。在其他實(shí)現(xiàn)中,該方法包括在無需參考至少一個(gè)存儲器內(nèi)數(shù)據(jù)存儲中的各個(gè)物理位置的情況下生成與至少一個(gè)存儲器內(nèi)數(shù)據(jù)存儲的狀態(tài)相關(guān)的至少一個(gè)檢查點(diǎn)。在又一實(shí)施例中,一種用于維護(hù)數(shù)據(jù)庫恢復(fù)系統(tǒng)的方法包括標(biāo)識局部日志流配置;接收與多個(gè)日志流上的至少一個(gè)數(shù)據(jù)存儲相關(guān)的事務(wù)日志信息;以及通過合并多個(gè)日志流中的至少一個(gè)日志流或拆分多個(gè)日志流中的至少一個(gè)日志流之一來使多個(gè)日志流符合局部日志流配置。在一些實(shí)現(xiàn)中,該方法可包括標(biāo)識事務(wù)日志信息內(nèi)所記錄的一系列事務(wù);以及通過對至少一個(gè)局部數(shù)據(jù)存儲執(zhí)行一系列事務(wù)來重建與事務(wù)日志信息至少部分相關(guān)的至少一個(gè)數(shù)據(jù)存儲的操作狀態(tài)。此處,以上已經(jīng)呈現(xiàn)了用于實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)恢復(fù)的實(shí)施例中的某些的概覽。作為接下來的內(nèi)容的路標(biāo),更詳細(xì)地描述數(shù)據(jù)庫系統(tǒng)恢復(fù)的各示例性、非限制性實(shí)施例和特征。隨后,為了附加說明,給出一些非限制性實(shí)現(xiàn)和示例,之后是其中可實(shí)現(xiàn)這些實(shí)施例和/或特征的代表性網(wǎng)絡(luò)和計(jì)算環(huán)境。數(shù)據(jù)庫恢復(fù)子系統(tǒng)關(guān)于恢復(fù)子系統(tǒng)設(shè)計(jì),本文中所述的各個(gè)實(shí)施例在存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)的上下文中提供。然而,應(yīng)當(dāng)理解,本文中所提供的各個(gè)實(shí)施例不旨在限于任何特定數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn),除非以其他方式明確闡明。此外,除非以其他方式闡明,所附權(quán)利要求不旨在限于任何數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)。另外,提供了其中一個(gè)或多個(gè)實(shí)施例寫入盤存儲和/或以其他方式管理盤存儲的各個(gè)示例性實(shí)現(xiàn)。然而,應(yīng)當(dāng)理解,盤存儲僅僅是持久存儲的一個(gè)示例,該盤存儲可被本文中的實(shí)施例使用,并且可以類似于如本文中所述的盤存儲的方式使用任何合適類型的盤存儲。因此,除非以其他方式明確闡明,在本文中使用的對盤存儲和/或管理的引用被視為可與任何其他合適類型的持久存儲互換。作為關(guān)于可由數(shù)據(jù)庫恢復(fù)子系統(tǒng)采用的日志設(shè)計(jì)的一個(gè)或多個(gè)非限制性方面的進(jìn)一步描述,可實(shí)現(xiàn)與可在數(shù)據(jù)庫系統(tǒng)內(nèi)實(shí)現(xiàn)的示例性日志記錄方案相關(guān)聯(lián)的各個(gè)非限制性特性。作為第一示例,如本文中所述的日志記錄方案在沒有緩沖池或未將“廢”數(shù)據(jù)(例如,與還未提交的事務(wù)相關(guān)聯(lián)的數(shù)據(jù))寫入盤的情況下操作。結(jié)果,實(shí)現(xiàn)本文中所提供的實(shí)施例的數(shù)據(jù)庫系統(tǒng)可被配置成從不加固撤銷日志記錄。例如,撤銷日志記錄可被用于存儲器以允許事務(wù)回退(rollback)所作出的任何改變;然而,一旦提交了事務(wù),如本文中所述的日志記錄方案就丟棄存儲器內(nèi)撤銷日志。相反,重做日志通過日志記錄方案來加固,并且被用于恢復(fù)。在本文中提供了關(guān)于構(gòu)建重做日志的其他細(xì)節(jié)。9由于廢數(shù)據(jù)從未被寫入盤,因此數(shù)據(jù)庫系統(tǒng)不需要執(zhí)行提前寫入日志記錄(WriteAheadLogging)以在廢數(shù)據(jù)之前強(qiáng)迫對盤的日志改變。因此,可構(gòu)建日志,其中I/O的最小單元是至少一個(gè)完整事務(wù)。此外,在一些數(shù)據(jù)庫系統(tǒng)(例如,取決于硬件能力等)中,多個(gè)完整事務(wù)可被歸組到單個(gè)I/O單元中。在本文中稱為日志集合(LA,logarena)的這些成組I/O單元通過啟用多個(gè)事務(wù)的成組提交來提供事務(wù)處理效率的較大提高和/或優(yōu)于常規(guī)事務(wù)處理方案的其他改進(jìn)。盡管本文中所呈現(xiàn)的實(shí)施例將單個(gè)日志集合用于事務(wù),但應(yīng)當(dāng)理解,恢復(fù)子系統(tǒng)不需要將整個(gè)事務(wù)寫入單個(gè)日志集合。相反,在一些實(shí)現(xiàn)中,可跨多個(gè)日志集合拆分事務(wù)。作為本文中所呈現(xiàn)的恢復(fù)子系統(tǒng)實(shí)施例的另一示例特性,日志記錄方案可被配置成利用純邏輯日志,其中物理信息未保存到日志。結(jié)果,恢復(fù)子系統(tǒng)可使用多個(gè)獨(dú)立的日志流來加固其日志。在一些情況下,各個(gè)日志流可被配置成使用不同的I/O設(shè)備,這可用來便于日志的可伸縮性、彈性(例如,通過在I/O設(shè)備發(fā)生故障的情況下將日志寫遷移到其他設(shè)備)、和/或其他益處。作為附加說明,圖1示出事務(wù)Tl的示例性處理,該事務(wù)Tl創(chuàng)建關(guān)于如根據(jù)本文中的各實(shí)施例所述的恢復(fù)子系統(tǒng)的記錄R1。盡管圖1示出在各個(gè)時(shí)刻發(fā)生的一系列事件,但應(yīng)當(dāng)理解,圖1中所給出的時(shí)刻以及圖1內(nèi)事件的排序不旨在關(guān)于可根據(jù)本文中的實(shí)施例發(fā)生的事件的時(shí)刻或次序作出限制。此外,圖1中所給出的時(shí)刻未按比例分配,并且與各個(gè)事件之間的時(shí)刻相關(guān)的比例不旨在經(jīng)由圖1暗示。如圖1所示,事務(wù)Tl在開始事務(wù)事件100之后(例如,時(shí)刻tlO)進(jìn)入活動階段。隨后,事務(wù)Tl可在事件110請求提交(例如,在時(shí)刻t20),此時(shí)事務(wù)Tl進(jìn)入提交準(zhǔn)備階段以用于進(jìn)行確認(rèn)和/或在提交事務(wù)tl之前要執(zhí)行的其他操作。隨后,事務(wù)Tl在完成提交準(zhǔn)備階段之后(例如,在時(shí)刻t30)進(jìn)入日志寫階段,此后事務(wù)Tl在事件115(例如,在時(shí)刻t40)提交。如圖1中進(jìn)一步所示,在事務(wù)Tl創(chuàng)建記錄Rl的情況下,記錄Rl可在時(shí)刻Tl提交被寫入盤。此外,處理事務(wù)Tl期間所創(chuàng)建的撤銷信息在提交Tl之后被丟棄。轉(zhuǎn)向圖2,呈現(xiàn)了根據(jù)各實(shí)施例的示例性日志配置的布局和功能方面的說明性概覽。圖2示出兩個(gè)日志流。上面的流包含兩個(gè)日志集合攜帶與事務(wù)1、3和4相關(guān)的信息的LA1.1;以及攜帶與事務(wù)8和9相關(guān)的信息的LA1.2。下面的流包含三個(gè)日志集合攜帶與事務(wù)2和5相關(guān)的信息的LA2.1;攜帶與事務(wù)6相關(guān)的信息的LA2.2;以及攜帶與事務(wù)7和10相關(guān)的信息的LA2.3。每個(gè)日志集合表示I/O的單個(gè)單元,如上所述。如圖2進(jìn)一步示出地,可通過I/O事件(例如,I/O事件200和20來界定日志集合。在HA配置中,日志集合可用作主節(jié)點(diǎn)和副節(jié)點(diǎn)兩者上的I/O的基本單元。由此,在一個(gè)實(shí)施例中,在與主節(jié)點(diǎn)上使用的布局不同的布局中,鏡像不拆分鏡像上的日志集合。然而,可以理解,鏡像節(jié)點(diǎn)可被配置有不同數(shù)量的日志流,并且在此情況下主節(jié)點(diǎn)上所聚集的日志集合以與鏡像上可用的配置相一致的方式分布在鏡像上。作為非限制性示例,在圖2所示的示例中,配置有三個(gè)日志流的鏡像可能將流配置成LA1.1和LA2.3使用第一日志流,LA2.1使用第二日志流,并且LA2.2使用第三日志流。在一個(gè)實(shí)施例中,日志集合可以各種方式攜帶與各個(gè)相關(guān)聯(lián)的事務(wù)相關(guān)的信息,每個(gè)事務(wù)進(jìn)而可攜帶與各個(gè)相關(guān)聯(lián)的記錄相關(guān)的信息??捎糜谌罩炯系氖纠Y(jié)構(gòu)由圖3示出并且在此處描述。如圖3所示,日志集合300可包含與一個(gè)或多個(gè)事務(wù)310相關(guān)的信10息。與事務(wù)310相對應(yīng)的信息進(jìn)而可包含與關(guān)聯(lián)于事務(wù)310的一個(gè)或多個(gè)記錄320相關(guān)的fn息ο作為具體、非限制性示例,現(xiàn)在更詳細(xì)地描述可在日志集合300內(nèi)利用的各個(gè)信息字段和結(jié)構(gòu)及其組成部分。應(yīng)當(dāng)理解,以下所提供的結(jié)構(gòu)只是可根據(jù)本文中的實(shí)施例來構(gòu)造信息的一種方式,并且可利用適當(dāng)信息的任何其他合適構(gòu)造。對于事務(wù)級信息,可用事務(wù)范圍(transaction-wide)粒度保存包含在日志集合中的各個(gè)事務(wù)的各個(gè)字段。例如,開始時(shí)間戳字段和結(jié)束時(shí)間戳字段可用于標(biāo)識系統(tǒng)中的事務(wù)。另外,當(dāng)事務(wù)不是二階段提交事務(wù)的一部分時(shí),獨(dú)立字段可被設(shè)置為“真”。如果該字段被設(shè)置為“真”,則事務(wù)日志可被視為連續(xù)的,并且可被包含在當(dāng)前日志集合中(例如,沒有提交記錄,如以下所述)。否則,主事務(wù)標(biāo)識符字段可標(biāo)識對應(yīng)主事務(wù)的事務(wù)標(biāo)識符,并且主提交日志序列號(LSN)字段可標(biāo)識主事務(wù)的進(jìn)展。在一個(gè)實(shí)施例中,這可用作對拉錨(crossanchor)的一部分,該對拉錨使如根據(jù)本文中的實(shí)施例所構(gòu)建的日志與不同的日志同步。當(dāng)獨(dú)立字段被設(shè)置為假時(shí),在一些情況下,還可在當(dāng)前日志集合或稍后的日志集合中找到屬于對應(yīng)事務(wù)的提交記錄。在一個(gè)實(shí)施例中,提交記錄被異步添加以指示已經(jīng)提交事務(wù)并且與其結(jié)果相關(guān)的信息可被主事務(wù)丟棄。在另一示例中,日志集合可包括中止記錄字段。當(dāng)系統(tǒng)處于HA配置時(shí),該字段可包括在發(fā)出“結(jié)束”時(shí)間戳(例如,確認(rèn)中)之后已經(jīng)被中止并且正在被日志記錄的全部事務(wù),以供恢復(fù)子系統(tǒng)成功地重建各個(gè)鏡像節(jié)點(diǎn)上的提交譜系。對于記錄級信息,可以日志記錄粒度保存各個(gè)字段。在一個(gè)實(shí)施例中,日志包含給定事務(wù)的一系列日志插入記錄(LIR)和日志刪除記錄(LDR)。這些記錄可被恢復(fù)子系統(tǒng)用于重新建立數(shù)據(jù)庫系統(tǒng)的完整存儲器內(nèi)映像。UR可與對應(yīng)于創(chuàng)建了版本的事務(wù)的結(jié)束時(shí)間戳的“開始”字段(例如,如基于事務(wù)級信息已知的)和被設(shè)置為無窮大的“結(jié)束”字段相關(guān)聯(lián)。類似地,LDR可與被設(shè)置為創(chuàng)建了版本的事務(wù)的結(jié)束時(shí)間戳的“開始”字段和被設(shè)置為刪除了版本的事務(wù)的結(jié)束時(shí)間戳的“結(jié)束”字段(例如,如基于事務(wù)級信息已知的)相關(guān)聯(lián)。在一個(gè)示例中,與各個(gè)LDR相對應(yīng)的“結(jié)束”字段可與各個(gè)日志記錄一起保存以便于對數(shù)據(jù)庫系統(tǒng)的恢復(fù)。鑒于上述內(nèi)容,記錄級信息可包括指示插入操作或刪除操作的操作字段,該記錄級信息進(jìn)而指示隨后的日志記錄的類型。如果操作字段指示刪除操作,則開始時(shí)間戳字段可用于存儲創(chuàng)建了記錄的事務(wù)的結(jié)束時(shí)間戳。在插入操作的情況下,該字段可能不存在。此外,表格標(biāo)識符字段可包含表格標(biāo)識符,該表格標(biāo)識符可用于在表格對象中定位與記錄相對應(yīng)的行。除以上字段之外,有效載荷字段可包含行的實(shí)際數(shù)據(jù)。這可以是,例如,用于插入操作的行的實(shí)際內(nèi)容。替換地,在刪除操作的情況下,可存在保存更少信息時(shí)的情況(例如,在具有唯一鍵碼的表格的情況下,在此情況下可只使用該鍵碼)。參考提交處理,關(guān)于恢復(fù)對提交的定義可依賴于給定事務(wù)特定的情形作出。如此處所使用的,術(shù)語“提交”與以下維度一起按分層結(jié)構(gòu)分層,這些維度由圖4另外示出。如圖4所示,物理提交400形成提交分層結(jié)構(gòu)中的最低層。如此處所使用的,物理提交400指的是在系統(tǒng)中加固恢復(fù)事務(wù)中所使用的所有信息的第一時(shí)間點(diǎn)。在一個(gè)實(shí)施例中,物理提交400充分利用物理提交中所使用的日志字段以及基本上保證恢復(fù)的I/O操作序列的全面11描述。在本文中進(jìn)一步詳細(xì)地描述這些方面。如圖4中接下來所示,邏輯提交410形成提交分層結(jié)構(gòu)中的中間層。如此處所使用的,在第一時(shí)間點(diǎn)處邏輯地提交事務(wù),在該第一時(shí)間點(diǎn)處其存儲器數(shù)據(jù)結(jié)構(gòu)被標(biāo)記為已提交并且其改變被施加到整個(gè)系統(tǒng)存儲器。在一個(gè)實(shí)施例中,邏輯提交410負(fù)責(zé)將存儲器內(nèi)改變施加到恢復(fù)系統(tǒng)。如圖4另外所示,可見提交420形成提交分層結(jié)構(gòu)中的上層。可見提交420指的是事務(wù)的結(jié)果對外部觀察者可見的第一時(shí)間點(diǎn)。因此,可見提交420的實(shí)現(xiàn)落后于物理提交400和邏輯提交410的實(shí)現(xiàn)。在一個(gè)實(shí)施例中,圖4所示的分層結(jié)構(gòu)可形成提交事務(wù)的全部或部分的序列。由此,在基于圖4中的分層結(jié)構(gòu)的一個(gè)非限制性示例中,直到已經(jīng)物理地提交事務(wù)才可邏輯地提交事務(wù)。在類似的非限制性示例中,直到已經(jīng)邏輯地提交了事務(wù),事務(wù)才能是可見的。然而,應(yīng)當(dāng)理解,該提交序列僅僅旨在作為在數(shù)據(jù)庫系統(tǒng)中可提交事務(wù)的示例,并且除非以其他方式明確闡明,此處的實(shí)施例不旨在限于任何特定提交過程。以下更詳細(xì)地描述了物理提交400、邏輯提交410和可見提交420的操作,如圖4所使用的。如上關(guān)于圖4所示的提交分層結(jié)構(gòu)所闡明的,以下描述是示例性的和非限制性的,并且可以理解,可使用用于提交事務(wù)的任何合適的技術(shù)。首先參考物理提交,以下概述了針對可包括數(shù)據(jù)庫事務(wù)的各個(gè)情形的物理提交的含義。作為第一示例,當(dāng)沒有依賴性的、與實(shí)現(xiàn)本文中的各實(shí)施例的數(shù)據(jù)庫系統(tǒng)完全相關(guān)聯(lián)的事務(wù)完成客戶機(jī)代碼處理時(shí),可發(fā)生包括一階段提交、單個(gè)系統(tǒng)實(shí)例和無傳出依賴性的情形。事務(wù)可在完成客戶機(jī)代碼處理之后進(jìn)入確認(rèn)。在成功的確認(rèn)之后,日志區(qū)段可被指派并填充在單個(gè)場所內(nèi)部。區(qū)段隨后被標(biāo)記為獨(dú)立的并且被加固。在此情形中,當(dāng)日志I/0成功地完成時(shí),認(rèn)為事務(wù)被物理地提交。在一個(gè)實(shí)施例中,在已經(jīng)成功地加固日志時(shí)的時(shí)間點(diǎn)處非二階段提交事務(wù)的事務(wù)一般可認(rèn)為被物理地提交。此外,在上述特定情況下,物理、邏輯和可見提交實(shí)質(zhì)上與日志I/O的完成一致。如果日志I/O寫操作失敗,則對應(yīng)的數(shù)據(jù)庫被標(biāo)記為離線并且發(fā)生恢復(fù)。在一些情況下,這可觸發(fā)HA設(shè)置中的故障轉(zhuǎn)移(failover),該故障轉(zhuǎn)移隨后被傳遞到主事務(wù)實(shí)例,以供主數(shù)據(jù)庫本身跟進(jìn)(例如,變成離線的)??梢岳斫?,在集成數(shù)據(jù)庫的情況下,以此方式進(jìn)行恢復(fù)的失敗可通過在一個(gè)系統(tǒng)中失敗而在另一個(gè)系統(tǒng)中未失敗來破壞單一系統(tǒng)映像幻像。在另一示例中,使用如此處所述的并行日志配置可使失敗的I/O能重復(fù)嘗試另一可用日志流,并且通過只使失敗的日志流離線來繼續(xù)運(yùn)行。在外部相關(guān)聯(lián)的數(shù)據(jù)庫的日志失敗時(shí),可使用類似的通知機(jī)制。在此情況下,數(shù)據(jù)庫可與外部相關(guān)聯(lián)的數(shù)據(jù)庫一起離線,不管是否有因混合系統(tǒng)事務(wù)產(chǎn)生的失敗。作為另一示例,可發(fā)生具有一階段提交、單個(gè)系統(tǒng)實(shí)例和傳出依賴性的情形,其中例如事務(wù)Tl對另一事務(wù)T2具有提交依賴性。在此情況下,Tl可與T2并行地構(gòu)建并提交其日志。如果日志I/O兩者都成功地完成,則物理地提交T2。響應(yīng)于提交T2,可去除Tl對T2的依賴性并且可激活Tl。在沒有其他依賴性的情況下,Tl隨后變成立即物理提交并且前進(jìn)到將其本身標(biāo)記為之后在短時(shí)間內(nèi)邏輯地提交。替換地,如果T2的日志I/O失敗,則T2從未被認(rèn)為已提交并且數(shù)據(jù)庫進(jìn)入如在以12上情形中所述的恢復(fù)。在另一替換方案中,Tl的日志I/O可失敗,而T2的日志1/0(先前的、落后的、或并行的)可成功。在此情況下,可以理解,因?yàn)樵诨謴?fù)時(shí)Tl的事務(wù)日志將是不可用的,所以T2仍然從未被認(rèn)為已物理地提交;因此,在到達(dá)(完全一致的,但現(xiàn)在是孤立的)T2日志之前日志重放將停止。當(dāng)正在提交的事務(wù)是與外部關(guān)聯(lián)數(shù)據(jù)庫的主事務(wù)相關(guān)聯(lián)的從事務(wù)時(shí),可發(fā)生包括二階段提交和單個(gè)系統(tǒng)實(shí)例的又一情形。在此情況下,事務(wù)接收來自主事務(wù)的“準(zhǔn)備”請求,在此期間其以類似于以上情況的方式加固其日志。然而,與以上情形相反,與該事務(wù)相關(guān)聯(lián)的日志區(qū)段被標(biāo)記有假的獨(dú)立字段,以指示在確定是否已經(jīng)提交事務(wù)之前要對恢復(fù)進(jìn)行附加協(xié)調(diào)。另外,可用主事務(wù)標(biāo)識符的值將如上所述的主事務(wù)標(biāo)識符字段填充到日志中。在一個(gè)實(shí)施例中,系統(tǒng)發(fā)出如先前情況中的加固請求,但從成功的I/O返回時(shí),事務(wù)未轉(zhuǎn)換到提交狀態(tài)。相反,事務(wù)保持在確認(rèn)階段中,等待來自主事務(wù)的“提交”通知。當(dāng)主事務(wù)提交時(shí),與主事務(wù)相關(guān)聯(lián)的外部系統(tǒng)通知依賴事務(wù)整個(gè)提交已經(jīng)成功。在接收到此信息之后,向其中已經(jīng)發(fā)出提交的相同日志流發(fā)出提交記錄I/O。可以理解,提交日志記錄可能包含在或可能未被包含在相同日志集合中,作為通用日志記錄。一旦已經(jīng)發(fā)出1/0(或在發(fā)出它之前),事務(wù)被標(biāo)記為正在提交并且通過后處理和無用信息收集。在剛剛描述的情形中,可以理解,事務(wù)可能在提交日志記錄將其寫入盤之前要邏輯地(并可見地)提交。這無法推斷出,物理提交在邏輯提交之后,因?yàn)樵凇疤峤弧闭{(diào)用由主事務(wù)發(fā)出之前,外部相關(guān)聯(lián)系統(tǒng)處的日志已經(jīng)包含經(jīng)加固提交日志記錄,該經(jīng)加固提交日志記錄標(biāo)記用于該事務(wù)的物理提交處理的有效結(jié)束。在恢復(fù)時(shí),當(dāng)在已經(jīng)找到具有假獨(dú)立字段的對應(yīng)先前日志區(qū)段的日志流中找到提交日志記錄時(shí),或當(dāng)所恢復(fù)主事務(wù)可被確定為已經(jīng)成功地提交時(shí),二階段提交中所包括的事務(wù)被認(rèn)為先前已物理地提交。在事務(wù)之間有數(shù)據(jù)依賴性(例如,T1#2PC_>T2)的情況下,可以理解,直到Tl依賴的事務(wù)(例如,T2)完成其確認(rèn)和其提交處理,才能如在以上主要情形中那樣完成與Tl的“準(zhǔn)備”請求相關(guān)聯(lián)的工作。因此,可以完成T2之后發(fā)生Tl的激活的方式引入改變。通常,可以理解,提交依賴性使用提交事務(wù)的線程來模仿等待事務(wù)。然而,在此情況下,存在需要同步的兩個(gè)不同的線程T2的提交線程和主事務(wù)的“準(zhǔn)備”線程。在一個(gè)實(shí)施例中,一旦“準(zhǔn)備”線程被解除阻塞,就可以類似于以上通常情況的方式來處理此情形。然而,可以理解,在一些情況下,包括已經(jīng)采用提交依賴性的只讀事務(wù)的事務(wù)可因其提交依賴性事務(wù)未實(shí)現(xiàn)其自己的確認(rèn)的事實(shí)而失敗。另外,在“準(zhǔn)備”線程因日志I/O失敗以外的原因失敗的情況下,可對與“準(zhǔn)備”線程相關(guān)聯(lián)的系統(tǒng)作出一個(gè)或多個(gè)改變以正確地報(bào)告這種出現(xiàn)和/或?qū)@種出現(xiàn)作出反應(yīng)。例如,在先前情形中,系統(tǒng)可被配置成制止假定日志寫失敗并使數(shù)據(jù)庫離線,并且相反回退并報(bào)告正確的差錯。在替換情形中,事務(wù)可涉及向外部數(shù)據(jù)庫服務(wù)器的二階段提交,但數(shù)據(jù)庫服務(wù)器的主事務(wù)是只讀的。在此情況下,足夠的信息可被保存在本地事務(wù)日志和外部數(shù)據(jù)庫服務(wù)器的事務(wù)日志兩者中,以使當(dāng)在別處重放事務(wù)時(shí),本地事務(wù)在外部事務(wù)之前不可見。在外部服務(wù)器的事務(wù)是讀-寫的情況下,可以理解,在一些情況下,由于在恢復(fù)期間事務(wù)標(biāo)識符可被保存(例如,在本地日志記錄中的主事務(wù)標(biāo)識符字段中)并且是可見的,因此上述內(nèi)容不13是問題。為了適應(yīng)此情形,本地事務(wù)在與只讀外部事務(wù)配對時(shí)將當(dāng)前外部LSN保存到主提交LSN字段。在恢復(fù)期間,該字段可用于等待本地系統(tǒng)狀態(tài)匹配外部系統(tǒng)的狀態(tài)。類似地,外部系統(tǒng)的日志可被配置成保存本地事務(wù)的當(dāng)前串行化時(shí)間戳,從而有效地實(shí)現(xiàn)對拉日志,田。在包括具有一階段提交的HA副節(jié)點(diǎn)的實(shí)施例中,將日志流場所從主節(jié)點(diǎn)連續(xù)地運(yùn)送到副節(jié)點(diǎn)??梢岳斫?,通信傳輸將場所片斷(例如,沒有排序保證)傳送到副節(jié)點(diǎn),并且該完整的場所變成是只遞增可用的。此外,可以理解,場所信息的傳輸與對主節(jié)點(diǎn)的物理提交處理并行地發(fā)生,該物理提交處理如以上對應(yīng)的單個(gè)系統(tǒng)情形中所述地進(jìn)行。在此情形中,當(dāng)在被包括在同步鏡像中的節(jié)點(diǎn)中的任一個(gè)上加固第一日志集合時(shí)實(shí)現(xiàn)物理提交。在一個(gè)實(shí)施例中,向副節(jié)點(diǎn)的即時(shí)故障轉(zhuǎn)移被配置成跟隨主節(jié)點(diǎn)上的日志寫失敗,從而使以上所述的“對第一加固的提交”規(guī)則變成邏輯上正確的。在包括事務(wù)的HA副節(jié)點(diǎn)的另一實(shí)施例中,這些事務(wù)被包括在主節(jié)點(diǎn)上的二階段提交中,可以理解,副節(jié)點(diǎn)在未確保首先加固對應(yīng)場所的主系統(tǒng)的日志的情況下無法加固日志集合。這可被完成以例如防止其中接收并加固包含事務(wù)準(zhǔn)備數(shù)據(jù)和提交日志記錄兩者的日志集合、但對應(yīng)的主事務(wù)日志在傳輸中丟失且從未到達(dá)的情形。如果在此情形中加固所接收日志集合,則可以理解,對鏡像節(jié)點(diǎn)的故障轉(zhuǎn)移將找到指示未(并且曾經(jīng)無法)發(fā)現(xiàn)完整提交的事務(wù)而非對應(yīng)的主事務(wù)日志的日志集合。為了防止以上情形,本地日志集合可包含描述場所中的所有事務(wù)的主事務(wù)標(biāo)識符的區(qū)段(例如,主事務(wù)標(biāo)識符字段,如以上一般描述的),并且場所I/O可跟隨對具有主事務(wù)標(biāo)識符集中的標(biāo)識符的所有主事務(wù)的加固。接下來參考邏輯提交,此處描述了各種情形,這些情形用關(guān)于將經(jīng)加固日志記錄應(yīng)用于存儲器內(nèi)系統(tǒng)映像的信息擴(kuò)充對如上所提供的物理提交的描述,以在恢復(fù)時(shí)獲得功能系統(tǒng)或在HA部署期間獲得可用鏡像。首先參考包括一階段提交、單個(gè)系統(tǒng)實(shí)例和未傳出的依賴性的情形,一旦日志I/O成功地完成,就可進(jìn)行邏輯提交。在完成日志I/O之后,事務(wù)可被標(biāo)記為已提交,并且可基本上即時(shí)地執(zhí)行其余的后處理和無用信息收集??砂l(fā)生包括一階段提交、單個(gè)系統(tǒng)實(shí)例和傳出的依賴性的情形,其中事務(wù)被給予結(jié)束時(shí)間戳(例如,指示提交序列)、進(jìn)行確認(rèn)、發(fā)出其日志1/0,并且隨后在被標(biāo)記為已提交之前延緩其傳出依賴性的待決完成。盡管處于該狀態(tài)中,可以理解,事務(wù)仍然是未確定的,例如如果事務(wù)依賴于失敗,則該事務(wù)也將失敗。一旦先前I/O成功地完成,該事務(wù)本身就將成功。在包括二階段提交和單個(gè)系統(tǒng)實(shí)例的情形中,要求事務(wù)在主事務(wù)調(diào)用“準(zhǔn)備”期間加固其日志。對應(yīng)的日志記錄可包含假的獨(dú)立標(biāo)記,從而指示還不知道要提交與事務(wù)相關(guān)聯(lián)的數(shù)據(jù)。在成功地完成I/O時(shí),事務(wù)保留不確定狀態(tài),直到主事務(wù)發(fā)出將事務(wù)的狀態(tài)從“不確定”改變到“已提交”的“提交”調(diào)用(并且稍后調(diào)度提交日志記錄)。在包含HA副節(jié)點(diǎn)和一階段提交的情形中,鏡像可被配置成維護(hù)以其提交(例如,結(jié)束)時(shí)間戳的次序排序的事務(wù)的串行化次序。該事務(wù)對象集在本文中稱為串行化事務(wù)時(shí)間線(STT)。為了構(gòu)建STT,可在副節(jié)點(diǎn)上獲得主節(jié)點(diǎn)上所發(fā)出的所有結(jié)束時(shí)間戳的完整歷史。此外,一旦事務(wù)已經(jīng)進(jìn)入提交處理就可將相繼標(biāo)識符分配給所有“結(jié)束”事務(wù)時(shí)間戳的14方案用于此情形。在一個(gè)實(shí)施例中,副節(jié)點(diǎn)上的STT可被分成兩個(gè)區(qū)段較舊事務(wù)的壓縮區(qū)段,其中所有事務(wù)時(shí)間戳是相繼的,所有事務(wù)被提交并且在事務(wù)序列號之間沒有間隙;以及具有丟失(或仍然開放)事務(wù)的空洞的稀疏區(qū)。給定如上所述指派“結(jié)束”時(shí)間戳的方式,副節(jié)點(diǎn)上的壓縮事務(wù)歷史可被標(biāo)識為其中所有可能時(shí)間戳(例如,相繼的64位整數(shù))的全部事務(wù)存在并且被提交的歷史。在一個(gè)示例中,這可通過將日志記錄配置成使主節(jié)點(diǎn)上的、在確認(rèn)(例如,意味著其已經(jīng)發(fā)出“結(jié)束”時(shí)間戳)期間已經(jīng)中止的事務(wù)還被包括在日志流中(例如,經(jīng)由中止記錄),從而使其可用于副節(jié)點(diǎn)來實(shí)現(xiàn)。副節(jié)點(diǎn)所接收的每個(gè)日志集合片斷可對應(yīng)于STT中的一個(gè)或多個(gè)事務(wù)槽。邏輯提交操作可將來自相鄰場所片斷的片斷縫合在一起,在一些情況下邏輯提交操作可橫跨行日志記錄,并且隨后在適當(dāng)時(shí)將新接收的記錄應(yīng)用于其存儲器內(nèi)容器(例如,散列集或跳過列表)。然而,可以理解,存在新接收的記錄無法被即時(shí)應(yīng)用于其各個(gè)容器的情況。這可在例如當(dāng)從相同記錄的先前版本無序地得到記錄并且記錄的先前版本尚未經(jīng)由STT處理時(shí)發(fā)生。當(dāng)發(fā)生該情況時(shí),還不能應(yīng)用的行日志記錄被追加到其(仍然開放的)對應(yīng)事務(wù),并且實(shí)際插入/刪除操作被延遲,直到所應(yīng)用事務(wù)的高水位標(biāo)記達(dá)到當(dāng)前事務(wù)。換言之,插入/刪除操作被延遲,直到具有較舊提交時(shí)間戳的事務(wù)已經(jīng)被完全應(yīng)用并提交并且當(dāng)前事務(wù)位于所應(yīng)用事務(wù)的壓縮列表的頂部。響應(yīng)于該發(fā)生,可基本上即時(shí)地應(yīng)用仍然與事務(wù)一起待決的延遲工作項(xiàng)(例如,行日志記錄)。由于壓縮事務(wù)歷史在當(dāng)前事務(wù)之前,因此可以理解,可保證應(yīng)用了仍然待決的當(dāng)前事務(wù)的工作項(xiàng)在相關(guān)時(shí)間點(diǎn)成功。還應(yīng)當(dāng)理解,盡管STT是全局共享的數(shù)據(jù)結(jié)構(gòu),但因STT可展示較大程度的并行化的事實(shí)如上所述的方案不可能引入并發(fā)限制。另外,可以理解,由于與從各個(gè)場所讀取行和將其施加到其各個(gè)容器中相關(guān)聯(lián)的大多數(shù)工作可并行地進(jìn)行,因此延遲工作項(xiàng)將不會引起實(shí)質(zhì)性延遲。例如,讀取日志記錄、基于日志記錄生成新的行和計(jì)算新的行的位置各自可并行地實(shí)現(xiàn)。因此,STT可被視為用于在恢復(fù)時(shí)組織事務(wù)日志的并行應(yīng)用的大流水線。在包括HA副節(jié)點(diǎn)和二階段提交的情形中,STT可以類似于如上所述的單個(gè)階段提交情況的方式起作用。然而,應(yīng)當(dāng)理解,在二階段提交情況下在STT中提交事務(wù)依賴于完全地應(yīng)用源于對應(yīng)日志集合的日志記錄。此外,在一些情況下,這種事務(wù)會需要通過相應(yīng)地應(yīng)用使用經(jīng)協(xié)調(diào)日志錨的主事務(wù)日志來門選,該經(jīng)協(xié)調(diào)日志錨被保存在主事務(wù)標(biāo)識符和主提交LSN字段中。進(jìn)一步參考可見提交,以下描述了可應(yīng)用于已經(jīng)完成邏輯提交的事務(wù)的各個(gè)可見性規(guī)則,如以上所一般描述的。在一個(gè)實(shí)施例中,這些規(guī)則可在考慮可讀副節(jié)點(diǎn)所需要的可見性和恢復(fù)序列期間的時(shí)間點(diǎn)的情況下設(shè)計(jì),在該時(shí)間點(diǎn)處數(shù)據(jù)對等待的客戶機(jī)是可見的。在包括一階段提交、單個(gè)系統(tǒng)實(shí)例和未傳出的依賴性的第一情形中,事務(wù)可通過在事務(wù)已經(jīng)被標(biāo)記為邏輯提交之后的確認(rèn)來進(jìn)行可見地提交。在包括一階段提交、單個(gè)系統(tǒng)實(shí)例和傳出的依賴性的另一情形中,可以類似于先前情形的方式進(jìn)行可見提交。此外,可從用于達(dá)到邏輯提交狀態(tài)的依賴性的實(shí)施導(dǎo)出此情形中的系統(tǒng)行為。例如,當(dāng)事務(wù)Tl依賴于事務(wù)T2(例如,T1->T2)時(shí),Tl的提交處理可被15延遲,直到T2的結(jié)果為已知。在一個(gè)實(shí)施例中,提供回用戶的確認(rèn)(ACK)消息可被類似地排序,如果這種排序?qū)蛻魴C(jī)ACK處理有用。替換地,所使用的排序?qū)蛻魴C(jī)正確性標(biāo)準(zhǔn)可以是次要的。在另一實(shí)施例中,在多個(gè)存儲過程上實(shí)現(xiàn)的事務(wù)(此處被稱為多步驟事務(wù)(MST))的情況下可發(fā)生附加處理。對以上示例進(jìn)行擴(kuò)展,在一些情況下,Tl可以是采用對T2(例如,通過讀取Τ2所創(chuàng)建的行)的提交依賴性的MST。稱為,盡管Τ2仍然不確定,但Tl可能需要返回給用戶,作為其多步驟處理的一部分。因此,可以理解,在該上下文中,Tl可將尚未保證已提交的數(shù)據(jù)項(xiàng)展現(xiàn)給終端用戶。盡管該出現(xiàn)未創(chuàng)建正確性問題(由于如果Τ2失敗則Tl可能失敗),但其可呈現(xiàn)信息公開的元素。在一個(gè)實(shí)施例中,這可通過在Tl返回給用戶作為其多步驟處理的一部分之前使Tl在“提交障礙”之后能夠串行化來緩解,該“提交障礙”允許對應(yīng)于Tl的通知只在已經(jīng)提交其全部依賴事務(wù)時(shí)進(jìn)行。在包括二階段提交和單個(gè)系統(tǒng)實(shí)例的又一情形中,一旦來自主事務(wù)的“提交”調(diào)用由事務(wù)接收,就可發(fā)出用戶ACK。此外,在單個(gè)系統(tǒng)崩潰恢復(fù)期間,系統(tǒng)可被配置成直到恢復(fù)完成才允許新的事務(wù)。通過這樣做,可見提交可被延遲,直到恢復(fù)結(jié)束。在一個(gè)示例中,二階段提交恢復(fù)可被配置成創(chuàng)建STT并且當(dāng)各個(gè)事務(wù)從各個(gè)日志流讀取時(shí)應(yīng)用這些事務(wù)。在另一示例中,當(dāng)已經(jīng)接收到日志集合、先前事務(wù)和主事務(wù)提交日志記錄的全部時(shí)事務(wù)關(guān)閉??梢岳斫?,在此情況下,在沒有并發(fā)讀者的情況(例如,如恢復(fù)中的情況)下,由于沒有可見信息的讀者,“可見提交”的發(fā)出可能是不太重要的。結(jié)果,在一些情況下,在恢復(fù)期間可通過簡化版本處理來簡化提交處理。在一個(gè)實(shí)施例中,這可至少部分地通過明確地實(shí)現(xiàn)本地提交和恢復(fù)來實(shí)現(xiàn),其模擬事務(wù)的常規(guī)處理、但通過使用STT而非常規(guī)用戶代碼驅(qū)動數(shù)據(jù)修改來這樣做。在崩潰恢復(fù)的相反情況下,在沒有參與讀者的情況下,舊版本數(shù)據(jù)的無用信息收集可與應(yīng)用相同數(shù)據(jù)的新版本基本上并發(fā)地執(zhí)行。通過這樣做,事務(wù)可被處理成沒有無用信息留下。這還可通過去除確認(rèn)處理、無用信息收集處理和后處理的需要來簡化事務(wù)處理,并且在一些情況下可向崩潰恢復(fù)提供顯著的速度加快。如以上情況下所述,此情形中的STT可被配置成保留對主事務(wù)恢復(fù)處理的依賴性。然而,應(yīng)當(dāng)理解,即使在沒有讀者的情況下,也可存在繼續(xù)應(yīng)用來自其各個(gè)日志集合的事務(wù)的完整STT返回(STT-backed)重放的原因。例如,依賴于所使用的檢查點(diǎn)操作方案,在一些情況下,經(jīng)由無用信息收集將日志完全應(yīng)用于收集并將事務(wù)發(fā)送到收集可以是獲得副節(jié)點(diǎn)上的檢查點(diǎn)而對主節(jié)點(diǎn)沒有任何要求(例如,運(yùn)送檢查點(diǎn)頁面等)的一種有效機(jī)制。在包括HA副節(jié)點(diǎn)和一階段提交的情形中,相關(guān)聯(lián)的數(shù)據(jù)庫系統(tǒng)可采用可見提交的方案,該方案類似于基于盤的數(shù)據(jù)庫系統(tǒng)的方案。例如,一旦事務(wù)的確認(rèn)返回到用戶,第二通信就可用于向次要實(shí)例指示將先前提交的數(shù)據(jù)“顯示”給可讀副節(jié)點(diǎn)上的任何讀者是安全的。可通過維護(hù)“可見性高的水位標(biāo)記”來實(shí)現(xiàn)此可見性的延遲,該“可見性高的水位標(biāo)記”是已經(jīng)向用戶確認(rèn)并且因此可安全地顯示給副節(jié)點(diǎn)上的讀者的最后一個(gè)提交時(shí)間戳。在一個(gè)示例中,副節(jié)點(diǎn)上的讀者可用作為其時(shí)間戳的此可見性水位標(biāo)記來發(fā)起只讀事務(wù),以避免看見任一個(gè)已經(jīng)施加的稍后改變(例如,已經(jīng)被邏輯提交但還未可見提交的改變)。在包括HA副節(jié)點(diǎn)和二階段提交的另一情形中,可以理解,可以類似于以上各個(gè)其他情形中所述的方式來進(jìn)行提交處理。此外,在此情形中,外部關(guān)聯(lián)數(shù)據(jù)庫可將進(jìn)展報(bào)告16ACK通知從主節(jié)點(diǎn)提供到副節(jié)點(diǎn)。作為響應(yīng),系統(tǒng)可使用如上所述的主事務(wù)標(biāo)識符字段來與外部相關(guān)聯(lián)的數(shù)據(jù)庫同步可見性。圖5是示出數(shù)據(jù)庫系統(tǒng)510的示例性實(shí)現(xiàn)的框圖。如圖5所示,數(shù)據(jù)庫系統(tǒng)510可與一個(gè)或多個(gè)數(shù)據(jù)存儲500和/或一個(gè)或多個(gè)鏡像數(shù)據(jù)存儲502相關(guān)聯(lián)。在一個(gè)實(shí)施例中,數(shù)據(jù)存儲500與主數(shù)據(jù)庫節(jié)點(diǎn)相關(guān)聯(lián),而鏡像數(shù)據(jù)存儲502與一個(gè)或多個(gè)副節(jié)點(diǎn)相關(guān)聯(lián);然而,應(yīng)當(dāng)理解,可使用數(shù)據(jù)存儲500和鏡像數(shù)據(jù)存儲502的任何合適配置。在一個(gè)示例中,數(shù)據(jù)存儲500和/或鏡像數(shù)據(jù)存儲502可以是存儲器內(nèi)數(shù)據(jù)存儲、盤數(shù)據(jù)存儲、或其任何合適的組合。在一個(gè)實(shí)施例中,使用存儲器內(nèi)存儲和盤存儲的組合,由此存儲器內(nèi)數(shù)據(jù)存儲用作主數(shù)據(jù)存儲,其中數(shù)據(jù)庫系統(tǒng)510維護(hù)數(shù)據(jù)項(xiàng)并且處理對數(shù)據(jù)項(xiàng)進(jìn)行操作的事務(wù)。在各個(gè)有規(guī)律的間隔或可變的間隔處,與存儲器內(nèi)數(shù)據(jù)存儲相關(guān)聯(lián)的數(shù)據(jù)隨后可被寫入盤。以此方式,可獨(dú)立于數(shù)據(jù)被排列在盤上的方式來組織存儲器內(nèi)的數(shù)據(jù),由此提供經(jīng)改進(jìn)的靈活性和設(shè)計(jì)的簡化、以及其他益處。數(shù)據(jù)庫系統(tǒng)510可包括事務(wù)處理組件520,事務(wù)處理組件520可便于根據(jù)圖4所示和以上一般描述的提交分層結(jié)構(gòu)來提交事務(wù)。此外,數(shù)據(jù)庫系統(tǒng)510包括被配置成維護(hù)邏輯事務(wù)日志的日志管理器組件530,如根據(jù)此處的實(shí)施例所述的。如此處所述地,日志管理器組件530可被配置成通過每個(gè)事務(wù)或事務(wù)組(例如,日志集合)使用單一日志記錄來將各個(gè)事務(wù)日志記錄。此外,由于日志管理器組件530被配置成用于邏輯日志記錄,因此記錄由日志管理器組件530構(gòu)建,而無需參考與記錄相關(guān)聯(lián)的數(shù)據(jù)的物理位置和/或任何其他物理位置信息。日志管理器組件530包括日志流管理組件540,日志流管理組件540可被配置成便于經(jīng)由多個(gè)日志流將數(shù)據(jù)庫事務(wù)日志記錄。如上所述,日志流可被分配給各個(gè)I/O設(shè)備和/或用于維護(hù)日志流的其他合適機(jī)制。在一個(gè)實(shí)施例中,日志流管理組件540可維護(hù)獨(dú)立日志流集并且在需要時(shí)修改這些日志流。圖6示出日志流修改的簡化概覽,其中日志流管理組件610將事務(wù)集600中的各個(gè)事務(wù)分配給一個(gè)或多個(gè)日志流640。如圖6所示,日志流管理組件610可通過例如經(jīng)由流合并組件620合并日志流640、或例如經(jīng)由流拆分組件630拆分日志流640來至少部分地修改日志流640。在一個(gè)實(shí)施例中,對如圖6—般示出的日志流的管理可進(jìn)一步用于使數(shù)據(jù)庫鏡像(例如,在副節(jié)點(diǎn)處等)能修改日志流以與鏡像的本地I/O配置相符合。例如,如圖7所示,系統(tǒng)日志流集700可被傳遞到數(shù)據(jù)庫鏡像710,數(shù)據(jù)庫鏡像710可使用日志流管理組件720或其他合適的機(jī)制來修改系統(tǒng)日志流集700中的各個(gè)日志流。這些修改可導(dǎo)致例如鏡像日志流集702,鏡像日志流集702符合數(shù)據(jù)庫鏡像710的I/O設(shè)備配置。盡管圖7提供了壓縮日志流的數(shù)據(jù)庫鏡像710的說明性示例,但應(yīng)當(dāng)理解,數(shù)據(jù)庫鏡像710可使用日志流管理組件720和/或任何其他合適的機(jī)制來以任何合適的方式管理各個(gè)相關(guān)聯(lián)的日志流。這些修改可包括,但不限于,合并日志流、拆分日志流、創(chuàng)建或刪除日志流、修改包含在日志流內(nèi)的一個(gè)或多個(gè)記錄、或任何其他合適的操作。返回到圖5,日志流管理組件540可便于改變恢復(fù)并行化的級別,如此處所一般描述的。例如,日志流管理組件540可被配置成通過例如以并行方式加載和/或以其他方式處理多個(gè)日志流來實(shí)現(xiàn)日志流預(yù)處理/處理并行化。在另一示例中,日志管理器組件530可與日志流管理組件540和/或數(shù)據(jù)庫系統(tǒng)510的其他組件協(xié)作,以通過例如便于以并行17方式將對應(yīng)于多個(gè)日志流的各個(gè)數(shù)據(jù)庫行插入對應(yīng)于數(shù)據(jù)存儲500和/或502的索引來實(shí)現(xiàn)索引插入并行化。在另一實(shí)施例中,日志管理器組件530還包括檢查點(diǎn)操作組件550,檢查點(diǎn)操作組件550可被配置成維護(hù)數(shù)據(jù)庫系統(tǒng)510的檢查點(diǎn)信息。不同于使用物理檢查點(diǎn)文件的常規(guī)數(shù)據(jù)庫系統(tǒng),檢查點(diǎn)操作組件550可便于使用邏輯檢查點(diǎn),而例如無需參考數(shù)據(jù)存儲500或502內(nèi)的各個(gè)位置。在一個(gè)實(shí)施例中,檢查點(diǎn)操作組件550所創(chuàng)建的檢查點(diǎn)可以是至少部分地為日志管理器組件530所生成的日志信息所固有。例如,與如常規(guī)物理檢查點(diǎn)集中所提供的序列信息相反,檢查點(diǎn)操作組件550可充分利用事務(wù)日志記錄內(nèi)所提供的時(shí)間戳,從而允許通過以其各個(gè)時(shí)間戳隱含的次序重復(fù)各個(gè)日志記錄的事務(wù)來恢復(fù)數(shù)據(jù)存儲500或502。在另一實(shí)施例中,檢查點(diǎn)操作組件550可充分利用數(shù)據(jù)庫系統(tǒng)510的多版本化功能以與數(shù)據(jù)庫系統(tǒng)510內(nèi)的其他操作并行地生成與數(shù)據(jù)庫系統(tǒng)510相關(guān)的檢查點(diǎn)信息。因此,可實(shí)現(xiàn)優(yōu)于常規(guī)系統(tǒng)的增加效率,其中數(shù)據(jù)必須在檢查點(diǎn)操作之前被鎖定以防止非預(yù)期行為。此處更詳細(xì)地提供可由本文中的實(shí)施例執(zhí)行的檢查點(diǎn)操作功能的各方面。在一個(gè)實(shí)施例中,檢查點(diǎn)操作組件550可與日志管理器組件530協(xié)作,從而通過發(fā)起例如與日志管理器組件530處的日志加載并行的檢查點(diǎn)加載來實(shí)現(xiàn)檢查點(diǎn)加載并行化。此處更詳細(xì)地提供可實(shí)現(xiàn)日志流預(yù)處理/處理并行化、索引插入并行化、檢查點(diǎn)加載并行化和/或恢復(fù)系統(tǒng)并行化的其他合適方面的各個(gè)示例。在數(shù)據(jù)庫崩潰、儲存設(shè)備故障的情況和/或期望恢復(fù)與數(shù)據(jù)庫系統(tǒng)510相關(guān)聯(lián)的部分或全部數(shù)據(jù)的任何其他合適的情況下,恢復(fù)組件560可被數(shù)據(jù)庫系統(tǒng)510用來恢復(fù)數(shù)據(jù)庫系統(tǒng)510和/或一個(gè)或多個(gè)數(shù)據(jù)存儲500或502的狀態(tài)。在一個(gè)實(shí)施例中,可通過以各個(gè)事務(wù)的時(shí)間戳所給出的次序重放日志管理器組件530所生成的事務(wù)日志中所記錄的事務(wù)來實(shí)現(xiàn)對與數(shù)據(jù)庫系統(tǒng)510相關(guān)聯(lián)的數(shù)據(jù)的恢復(fù)。在一個(gè)示例中,可在檢查點(diǎn)操作組件550的輔助下或獨(dú)立于檢查點(diǎn)操作組件550來執(zhí)行以此方式的恢復(fù)。數(shù)據(jù)庫系統(tǒng)510還可包括盤管理組件570,盤管理組件570被配置成管理與數(shù)據(jù)庫系統(tǒng)510相關(guān)聯(lián)的一個(gè)或多個(gè)盤數(shù)據(jù)存儲。作為其中數(shù)據(jù)庫系統(tǒng)510是存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)的非限制性示例,盤管理組件570可響應(yīng)于對存儲器內(nèi)的數(shù)據(jù)項(xiàng)所執(zhí)行的對應(yīng)操作來管理對盤上的數(shù)據(jù)項(xiàng)的插入、刪除和/或修改。在其中數(shù)據(jù)庫系統(tǒng)510是存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)的另一實(shí)施例中,盤管理組件570可被配置成避免將廢數(shù)據(jù)(例如,對應(yīng)于尚未提交事務(wù)的數(shù)據(jù))寫入盤。例如,由于常規(guī)盤上數(shù)據(jù)庫系統(tǒng)未被設(shè)計(jì)成在存儲器內(nèi)操作,因此在一些情況下,在沒有足夠的存儲器可用于系統(tǒng)以供完全處理對應(yīng)于數(shù)據(jù)項(xiàng)的事務(wù)的情況下,這些系統(tǒng)可能需要將廢數(shù)據(jù)的一個(gè)或多個(gè)項(xiàng)寫入盤。相反,響應(yīng)于經(jīng)由提交數(shù)據(jù)項(xiàng)的對應(yīng)事務(wù)來確認(rèn)數(shù)據(jù)項(xiàng),盤管理組件570可充分利用數(shù)據(jù)庫系統(tǒng)的存儲器內(nèi)性質(zhì)將數(shù)據(jù)項(xiàng)寫入盤。另外,在一些情況下,數(shù)據(jù)庫系統(tǒng)510可充分利用存儲器內(nèi)工作環(huán)境來制止執(zhí)行提前寫入日志記錄,如以上一般描述的。由此,與被配置成在提交之前將事務(wù)信息日志記錄的一些常規(guī)數(shù)據(jù)庫系統(tǒng)相反,數(shù)據(jù)庫系統(tǒng)510(例如,通過盤管理組件570)可限制事務(wù)的日志記錄,直到已經(jīng)了提交事務(wù)。結(jié)果,數(shù)據(jù)庫系統(tǒng)510可另外操作,而無需依賴于各個(gè)事務(wù)的撤銷日志。由此,響應(yīng)于提交事務(wù),可丟棄撤銷信息和/或與逆轉(zhuǎn)事務(wù)相關(guān)的其他信息。在另一實(shí)施例中,如此處所述的日志記錄和恢復(fù)技術(shù)可用來便于數(shù)據(jù)庫系統(tǒng)集18成。圖8示出根據(jù)此處所呈現(xiàn)的實(shí)施例的、可執(zhí)行的數(shù)據(jù)庫系統(tǒng)集成的簡化說明性概覽。如圖8所示,數(shù)據(jù)庫環(huán)境800可包括多個(gè)數(shù)據(jù)庫系統(tǒng),諸如存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810和盤上數(shù)據(jù)庫系統(tǒng)830。存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810和盤上數(shù)據(jù)庫系統(tǒng)830可分別包括各自的恢復(fù)子系統(tǒng)820和840,恢復(fù)子系統(tǒng)820和840進(jìn)而可結(jié)合日志記錄組件822和842來記錄各個(gè)對應(yīng)的系統(tǒng)內(nèi)所執(zhí)行的操作。在一個(gè)特定、非限制性示例中,存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810可根據(jù)此處的各個(gè)實(shí)施例執(zhí)行日志記錄和恢復(fù),并且盤上數(shù)據(jù)庫系統(tǒng)830可對應(yīng)于存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810與其交互的主數(shù)據(jù)庫實(shí)例。盡管圖8示出數(shù)據(jù)庫環(huán)境800,存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810和盤上數(shù)據(jù)庫系統(tǒng)830作為單個(gè)框,應(yīng)當(dāng)理解,這些實(shí)體的功能可分布在任何合適數(shù)量的計(jì)算設(shè)備或其他設(shè)備之間,這些設(shè)備各自可經(jīng)由任何合適的有線或無線通信手段和/或任何其他機(jī)制來通信地耦合。如圖8另外示出地,在數(shù)據(jù)庫環(huán)境800內(nèi)實(shí)現(xiàn)恢復(fù)子系統(tǒng)集成組件850。在一個(gè)實(shí)施例中,恢復(fù)子系統(tǒng)集成組件850被配置成集成日志記錄組件822和842所生成的各個(gè)系統(tǒng)日志,并且集成這些日志以將單一、公共日志860的外觀呈現(xiàn)給數(shù)據(jù)庫環(huán)境800的用戶。在一個(gè)示例中,恢復(fù)子系統(tǒng)集成組件850可被配置成組合與存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810和盤上數(shù)據(jù)庫系統(tǒng)830相關(guān)聯(lián)的日志,從而兩個(gè)系統(tǒng)都使用公共日志860。替換地,恢復(fù)子系統(tǒng)集成組件850可被配置成管理與存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810和盤上數(shù)據(jù)庫系統(tǒng)830相關(guān)聯(lián)的日志并且便于其間的通信,基于此可維護(hù)公共日志860,作為表面上組合各個(gè)系統(tǒng)日志以供數(shù)據(jù)庫環(huán)境800的加速用戶管理的結(jié)構(gòu)。在一個(gè)實(shí)施例中,通過以一種或多種上述方式提供日志集成,恢復(fù)子系統(tǒng)集成組件850可獨(dú)立于一個(gè)或多個(gè)其他組件或結(jié)合一個(gè)或多個(gè)其他組件起作用,從而允許在數(shù)據(jù)庫環(huán)境800內(nèi)操作的各個(gè)數(shù)據(jù)庫系統(tǒng)在終端用戶看來作為單一數(shù)據(jù)庫操作。在一個(gè)實(shí)施例中,存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810和盤上數(shù)據(jù)庫系統(tǒng)830可經(jīng)由恢復(fù)子系統(tǒng)集成組件850和/或其他合適的機(jī)制來協(xié)作,以優(yōu)化數(shù)據(jù)庫環(huán)境800中所使用的二階段提交過程。在一個(gè)示例中,數(shù)據(jù)庫環(huán)境800使盤上數(shù)據(jù)庫系統(tǒng)830的客戶或其他用戶能將一些其表格和/或工作負(fù)荷移交至存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810,以獲得對整體系統(tǒng)行為的改進(jìn)而無需對其代碼作出顯著改變。由此,為了實(shí)現(xiàn)此目的,在與存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810一起使用時(shí),對盤上數(shù)據(jù)庫系統(tǒng)830的二階段提交的成本可降低。在概念上,可以理解,二階段提交的成本從以下事實(shí)導(dǎo)出“準(zhǔn)備”階段需要來自每個(gè)參與者的至少一個(gè)1/0,并且“提交”階段需要來自主參與者的一個(gè)1/0(以及來自其他參與者的延遲活動)。由此,具有兩個(gè)參與者(例如,盤上數(shù)據(jù)庫系統(tǒng)830作為主參與者而存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810作為次參與者)的簡單實(shí)現(xiàn)招致3個(gè)1/0,而非盤上數(shù)據(jù)庫系統(tǒng)830單獨(dú)所招致的1個(gè)I/O。結(jié)果,在一些情況下,通過移動其數(shù)據(jù)的子集并且對存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810進(jìn)行處理,用戶可看到性能的降級。因此,可使用使混合容器事務(wù)所招致的懲罰最小化的一個(gè)或多個(gè)方案。為了達(dá)到以上目標(biāo),數(shù)據(jù)庫環(huán)境800可允許關(guān)于存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)800上的事務(wù)的數(shù)據(jù)駐留在多個(gè)日志流中。然而,應(yīng)當(dāng)理解,除添加對各個(gè)日志集合中所包含的事務(wù)片斷的排序以外,該修改將對此處所述的其他實(shí)施例沒有影響。在跨集合拆分事務(wù)是可能的情況下,當(dāng)混合事務(wù)在系統(tǒng)之間轉(zhuǎn)換時(shí)或當(dāng)多步驟事務(wù)返回給用戶時(shí),部分事務(wù)日志可被發(fā)送到日志管理器。這些動作實(shí)質(zhì)上等價(jià)于為處于“幾19乎準(zhǔn)備好的”狀態(tài)中的存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810上的事務(wù)保留相當(dāng)部分時(shí)間。因此,當(dāng)對主事務(wù)的“準(zhǔn)備”調(diào)用到達(dá)時(shí),日志的存儲器內(nèi)部分已經(jīng)被持久保持并且在存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)810處無需采用動作是可能的。由此,如果盤上數(shù)據(jù)庫系統(tǒng)830另外決定首先“準(zhǔn)備”存儲器內(nèi)數(shù)據(jù)庫引擎并且隨后準(zhǔn)備主事務(wù),則其可隨后將“準(zhǔn)備”調(diào)用和“添加”調(diào)用綁定到單一I/O事務(wù)中,由此達(dá)到類似于盤上數(shù)據(jù)庫系統(tǒng)830處的單階段提交情況的性能級別。圖9是示出用于管理存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)中的恢復(fù)子系統(tǒng)的示例性、非限制性過程的流程圖。在900,標(biāo)識對一個(gè)或多個(gè)存儲器內(nèi)數(shù)據(jù)存儲中的數(shù)據(jù)進(jìn)行操作的事務(wù)。在910,提交事務(wù);響應(yīng)于此,在920,在一個(gè)或多個(gè)邏輯日志記錄中將事務(wù)日志記錄。在一個(gè)非限制性示例中,在920,對事務(wù)的日志記錄可包括將事務(wù)所修改的記錄的所有新版本寫入盤。在930,丟棄與事務(wù)相關(guān)的撤銷信息。隨后,在940,作出對關(guān)于是否已經(jīng)發(fā)生數(shù)據(jù)庫恢復(fù)是合乎需要的事件的確定。如果未發(fā)生這種事件,則數(shù)據(jù)庫系統(tǒng)繼續(xù)其正常操作。否則,在950,至少部分地通過遍歷各個(gè)日志記錄的事務(wù)(例如,如在930日志記錄的)來執(zhí)行對數(shù)據(jù)庫系統(tǒng)的恢復(fù)。圖10是示出用于維護(hù)關(guān)于數(shù)據(jù)庫事務(wù)的數(shù)據(jù)庫恢復(fù)信息的示例性、非限制性過程的流程圖。在1000,接收與對至少一個(gè)存儲器內(nèi)數(shù)據(jù)存儲中的數(shù)據(jù)進(jìn)行操作的事務(wù)相關(guān)的信息。在1010,根據(jù)邏輯日志記錄格式將事務(wù)日志記錄到一個(gè)或多個(gè)日志記錄中。在1020,響應(yīng)于提交事務(wù),丟棄與事務(wù)相關(guān)的逆轉(zhuǎn)信息。在1030,防止將對應(yīng)于一個(gè)或多個(gè)未提交事務(wù)的數(shù)據(jù)寫入(例如,廢寫入)至少一個(gè)對應(yīng)的盤上數(shù)據(jù)存儲。圖11是示出用于在副節(jié)點(diǎn)處維護(hù)數(shù)據(jù)庫系統(tǒng)的示例性、非限制性過程的流程圖。在1100,標(biāo)識本地日志流配置(例如,副節(jié)點(diǎn)所使用的日志I/O配置等)。在1110,經(jīng)由多個(gè)日志流接收與至少一個(gè)數(shù)據(jù)存儲相關(guān)的事務(wù)日志信息。在1120,副節(jié)點(diǎn)通過合并和/或拆分多個(gè)日志流中的至少一個(gè)日志流來使多個(gè)日志流符合本地日志流配置。非限制性示例檢查點(diǎn)管理過程以上已經(jīng)描述了數(shù)據(jù)庫恢復(fù)機(jī)制的各個(gè)實(shí)施例。在以下描述中,提供了可用于創(chuàng)建并維護(hù)檢查點(diǎn)、可用于檢查點(diǎn)(例如,經(jīng)由檢查點(diǎn)操作組件550,如圖5所示)、崩潰恢復(fù)和備份的各種技術(shù),如此處所述。與以上實(shí)現(xiàn)特定細(xì)節(jié)一樣,以下描述不應(yīng)當(dāng)作為對更一般概念和在別處所述的實(shí)施例的限制,并且僅僅出于說明性目的包括在內(nèi)。在一個(gè)實(shí)施例中,可通過例如在預(yù)定間隔將一個(gè)大I/O中的數(shù)據(jù)庫的全部內(nèi)容保存在單一文件中來生成簡單完整的檢查點(diǎn)??梢岳斫?,以此方式進(jìn)行的檢查點(diǎn)操作提供了易于實(shí)現(xiàn)和事務(wù)的一致性,以及其他益處。作為非限制性示例,該檢查點(diǎn)方案可收集并保存被以下偽腳本隔離的數(shù)據(jù)。for_eachpartitionbegintranselect*from<all_tables>20selectcurrent—txid()rollbacktranendforeach對于小數(shù)據(jù)庫,快照隔離方案使查詢(諸如以上所示的查詢)容易實(shí)現(xiàn)并且在運(yùn)行時(shí)資源中相對便宜。查詢的結(jié)果是包含整個(gè)數(shù)據(jù)庫的單一文件。當(dāng)數(shù)據(jù)庫生長時(shí),可通過劃分?jǐn)?shù)據(jù)查詢來擴(kuò)展該方法,如下所述。例如,簡單劃分的完整檢查點(diǎn)方案可被實(shí)現(xiàn)為對以上簡單檢查點(diǎn)的細(xì)化。代替使用一個(gè)事務(wù)來掃描整個(gè)數(shù)據(jù)庫,經(jīng)劃分檢查點(diǎn)過程使用多個(gè)更小的事務(wù),這些更小的事務(wù)各自只隔離并加固檢查點(diǎn)集的子集??稍谥鸨砀竦幕A(chǔ)上進(jìn)行劃分;替換地,檢查點(diǎn)過程可使用物理劃分方案(例如,散列表元的計(jì)數(shù))來獲得將行更平均地分發(fā)給檢查點(diǎn)操作事務(wù)。通過允許跨多個(gè)核并行化檢查點(diǎn)生成過程,劃分可有助于檢查點(diǎn)操作。另外,跨多個(gè)事務(wù)拆分檢查點(diǎn)避免生成具有系統(tǒng)范圍影響的長期運(yùn)行的事務(wù)。作為非限制性示例,可如以下偽腳本所示進(jìn)行劃分的檢查點(diǎn)操作。for_eachpartitionbegintranselect*from<all—tables〉whererows_in_partitionselectcurrent—txid()rollbacktranendfor_each然而,應(yīng)當(dāng)注意,除非事務(wù)共享相同的“開始”時(shí)間戳,否則檢查點(diǎn)映像不可能事務(wù)性地一致。換言之,與第一簡單檢查點(diǎn)映像不同,通過以上過程所獲得的映像可能需要來自疊蓋檢查點(diǎn)的日志記錄的幫助以在恢復(fù)時(shí)產(chǎn)生完全一致的數(shù)據(jù)庫。因此,可以理解,該方案以并行化和存儲器使用率換取恢復(fù)事件和代碼復(fù)雜性。作為另一替換方案,可使用只向前(forward-only)的差分檢查點(diǎn)。與簡單的和經(jīng)劃分的檢查點(diǎn)操作方案不同,差分檢查點(diǎn)操作算法無法產(chǎn)生存儲器內(nèi)數(shù)據(jù)庫的完整映像。相反,差分檢查點(diǎn)操作使用自最后一個(gè)檢查點(diǎn)起被保存在系統(tǒng)中的信息來隔離自最后一個(gè)檢查點(diǎn)起已修改的數(shù)據(jù)的“島”。通過只保存已經(jīng)改變的數(shù)據(jù),可以理解,差分檢查點(diǎn)提供了顯著節(jié)約中央處理單元(CPU)成本以及與檢查點(diǎn)相關(guān)聯(lián)的1/0成本的可能性。此外,如以下進(jìn)一步描述的,數(shù)據(jù)庫系統(tǒng)內(nèi)所提供的現(xiàn)有數(shù)據(jù)的相當(dāng)部分可被用于跟蹤檢查點(diǎn)之間的改變。由此,差分檢查點(diǎn)提供了上述益處和與恢復(fù)和存儲器使用率相關(guān)聯(lián)的成本之間的折衷。作為以下所述的差分檢查點(diǎn)維護(hù)技術(shù)的附加背景,以下描述了數(shù)據(jù)庫無用信息收集的各方面。在一個(gè)示例中,數(shù)據(jù)庫系統(tǒng)可使用快照隔離作為所有其他隔離級的基礎(chǔ)。結(jié)果,實(shí)現(xiàn)負(fù)責(zé)清理舊版本的無用信息收集組件。因此,這種系統(tǒng)中的無用信息收集作為系統(tǒng)中的所有數(shù)據(jù)修改的全局交換所。具體而言,無用信息收集組件可在實(shí)質(zhì)粒度基礎(chǔ)上(例如,用表元粒度)跟蹤與各個(gè)索引相關(guān)聯(lián)的“無用信息”的量。在一個(gè)示例中,經(jīng)由無用信21息收集表元信息結(jié)構(gòu)來實(shí)現(xiàn)該目的。響應(yīng)于無用信息收集器觀察到的已提交事務(wù)中的被刪除行(或所中止事務(wù)中的插入行),創(chuàng)建無用信息收集表元信息結(jié)構(gòu)。無用信息收集表元信息對特定表元上的無用信息的量計(jì)數(shù)。一旦建立,該計(jì)數(shù)由無用信息收集器組件和遇到無用信息并在常規(guī)掃描過程中將其清理的任何常規(guī)線程兩者維護(hù)。在一個(gè)示例中,這形成了協(xié)作式無用信息收集器的■石出。在一個(gè)示例中,差分檢查點(diǎn)操作可擴(kuò)展無用信息收集表元信息結(jié)構(gòu),以使其不僅跟蹤表元中的無用信息行的數(shù)量而且包含“檢查點(diǎn)廢舊,,標(biāo)志,該“檢查點(diǎn)廢舊,,標(biāo)志指示給定無用信息收集表元信息結(jié)構(gòu)所跟蹤的表元應(yīng)當(dāng)包括在下一個(gè)差分檢查點(diǎn)中。作為非限制性示例,以下提供了可用于以上述方式生成檢查點(diǎn)映像的偽腳本。begintranselect*from<all_tables>where‘GcBucketInfo’isdirtyselectcurrent—txid()rollbacktran在另一示例中,可劃分以上腳本,并且以類似于以上所述的簡單劃分的檢查點(diǎn)方案的方式并行化工作負(fù)荷。在以上方法中,每個(gè)差分檢查點(diǎn)被存儲在單獨(dú)的文件中,并且差分檢查點(diǎn)方案依賴于過去某時(shí)存在完整檢查點(diǎn)。該過程的折衷在于,因?yàn)閺奈础霸谶m當(dāng)位置(inplace)”更新數(shù)據(jù),所以在創(chuàng)建新差分檢查點(diǎn)文件的情況下原始的完整檢查點(diǎn)可“衰減”。具體而言,新差分檢查點(diǎn)文件實(shí)際上可自原始檢查點(diǎn)文件漸進(jìn)地重寫更多的區(qū)段,從而加速其降級。在一個(gè)實(shí)施例中,數(shù)據(jù)庫引擎可在恢復(fù)時(shí)查明哪些檢查點(diǎn)文件(例如,完整的和差分的)的哪些區(qū)段要被掃描并且加載到存儲器中。為了加速該過程,可創(chuàng)建“主檢查點(diǎn)索引”,該“主檢查點(diǎn)索引”包括指向可能跨多個(gè)文件的其各自位置中的最近檢查點(diǎn)片斷的指針。作為非限制性示例,索引可被結(jié)構(gòu)化為包含區(qū)段的Brree,這些區(qū)段在串接起來時(shí)形成完整檢查點(diǎn)。圖12示出了該布局。如圖12所示,原始檢查點(diǎn)1200包含8個(gè)記錄,并且之后的每個(gè)差分檢查點(diǎn)1202、1204和1206修改(并且保存)8個(gè)記錄中的各個(gè)記錄。在沒有檢查點(diǎn)范圍索引1210的情況下,最終檢查點(diǎn)的內(nèi)容可能難以從組件部分重新創(chuàng)建。例如,由于在第三檢查點(diǎn)1206中重新創(chuàng)建第一檢查點(diǎn)1202的全部內(nèi)容,因此讀取第一檢查點(diǎn)1202僅僅導(dǎo)致錯過時(shí)間。作為以上差分檢查點(diǎn)過程的替換方案,“在適當(dāng)?shù)奈恢酶隆睓z查點(diǎn)文件的策略可用于代替主檢查點(diǎn)索引。在一個(gè)實(shí)施例中,可使用“在適當(dāng)?shù)奈恢酶隆奔庸滩呗?,其中所保存粒度的單位是多個(gè)表元構(gòu)成的集。圖13參考存儲器內(nèi)行表示1300以及兩個(gè)檢查點(diǎn)1310和1320示出該過程。在一個(gè)示例中,相鄰表元的該集群可有效地形成“邏輯頁面”,在一些情況下該“邏輯頁面”可改進(jìn)對應(yīng)盤上文件中的空間管理(例如,由于滿足和/或返回來自相同邏輯頁面上可用的“寬松空間”的添加和/或去除的能力)。在少量更新到達(dá)多個(gè)頁面的情況下,可觸發(fā)對部分或全部受影響頁面的寫。在數(shù)據(jù)被組織為散列的情形中,這可導(dǎo)致創(chuàng)建用于差分檢查點(diǎn)請求的相當(dāng)部分的“幾乎完整的”22檢查點(diǎn)。替換地,如果持久保持的數(shù)據(jù)在經(jīng)排序索引(諸如跳躍列表)而非散列索引中組織,則在一些情況下導(dǎo)致隨機(jī)頁面的寫的改變可根據(jù)其密鑰鄰近性來群集。作為另一示例性檢查點(diǎn)操作方案,可使用虛擬存儲器(VM)仿形檢查點(diǎn)設(shè)計(jì)。這種設(shè)計(jì)可用于例如展示存儲器管理和檢查點(diǎn)操作方案之間緊密集成的系統(tǒng)。在一個(gè)示例中,考慮行數(shù)據(jù)來自遞增指派器型存儲器對象的情形。在數(shù)據(jù)庫系統(tǒng)使用版本化的情況下,該指派類型可與已就位的引擎的各方面緊密地對齊。在一個(gè)實(shí)施例中,由于在這種檢查點(diǎn)操作方案中檢查點(diǎn)簡單地指定從前一檢查點(diǎn)起已指派的頁面的事實(shí),VM仿形檢查點(diǎn)操作可由遞增指派器輔助。圖14參考前一檢查點(diǎn)1400之后發(fā)生的差分檢查點(diǎn)1410示出該概念。進(jìn)一步關(guān)于此處所提供的數(shù)據(jù)庫恢復(fù)技術(shù),恢復(fù)處理的結(jié)構(gòu)可如下地實(shí)現(xiàn)。從純等待時(shí)間的角度,可以理解,當(dāng)與非基于存儲器的系統(tǒng)相比時(shí),基于存儲器的系統(tǒng)的恢復(fù)處于劣勢。這是因?yàn)椋诨诖鎯ζ鞯南到y(tǒng)中直到數(shù)據(jù)庫的全部內(nèi)容在存儲器中才恢復(fù)數(shù)據(jù)庫,而傳統(tǒng)數(shù)據(jù)庫被認(rèn)為在重做和撤銷之后恢復(fù),在其結(jié)束時(shí)只有少量數(shù)據(jù)頁面需要已加載到緩沖池中。鑒于上述內(nèi)容,可在存儲器中系統(tǒng)中實(shí)現(xiàn)用以在可能的程度上實(shí)現(xiàn)恢復(fù)級并行化的機(jī)制。如此處所述地,存儲器中數(shù)據(jù)庫恢復(fù)系統(tǒng)可支持多個(gè)日志流,這是恢復(fù)系統(tǒng)所使用的邏輯日志格式的結(jié)果。因此,這種系統(tǒng)中用于恢復(fù)的方案可遵循以下示例性序列。(1)掃描日志以供分析,并且找到最后一個(gè)檢查點(diǎn)的位置。(2)重新加載檢查點(diǎn)(從一個(gè)或多個(gè)文件)。(3)運(yùn)行重做階段,這重新掃描多個(gè)日志流的相關(guān)尾部。(4)將日志流尾部合并成單一順序的、“統(tǒng)一的”日志歷史。(5)將在該統(tǒng)一的日志歷史中找到的日志紀(jì)錄應(yīng)用于先前加載的檢查點(diǎn)映像。在其他實(shí)施例中,可結(jié)合各種其他機(jī)制來使用以上序列,從而提供并行化的附加機(jī)會。以下更詳細(xì)地描述這些機(jī)會。在第一示例中,負(fù)載掃描預(yù)處理并行化可如下地實(shí)現(xiàn)。注意,可并行地讀取和預(yù)處理多個(gè)日志流。由于事務(wù)具有唯一的序列ID,因此可能通過例如使每個(gè)讀者線程在虛擬統(tǒng)一的歷史時(shí)間線上填充其指定槽來并行地創(chuàng)建統(tǒng)一的歷史(并且,在一些情況下,以服從無鎖實(shí)現(xiàn)的方式)。在該時(shí)間線中,第一事務(wù)(例如,具有ID100的事務(wù))與其對應(yīng)的日志紀(jì)錄一起在槽0處被加載。另外,事務(wù)101可在槽1處加載,事務(wù)113可在槽13處加載等等。在一個(gè)示例中,異步填充該時(shí)間線,以使在任何時(shí)間點(diǎn)處給定槽之后的槽可能還未被填充。然而,仍然可以理解,在掃描全部日志流結(jié)束時(shí),時(shí)間線將被填滿(例如,事務(wù)ID的每個(gè)槽將被占用)。除并行加載以外,紀(jì)錄可被插入實(shí)際存儲器內(nèi)索引。這可例如由只在該任務(wù)中專用的單個(gè)線程(此處被稱為插入線程)完成。作為示例,填充壓縮統(tǒng)一歷史的高水位標(biāo)記的負(fù)載線程可承擔(dān)插入線程而非單獨(dú)的、專用的線程的角色。例如,在出現(xiàn)統(tǒng)一歷史的情況下,如以下事務(wù)Id[100,101,102,103,],,106,,108以上序列示出具有9個(gè)槽的歷史,其中前4個(gè)槽已經(jīng)被加載到存儲器內(nèi)表格中,{104、105和107}仍然是缺少的,并且108是從日志流加載的最后一個(gè)事務(wù)。給定該布局,23由于104是整個(gè)壓縮(或“所應(yīng)用的”)事務(wù)歷史的高水位標(biāo)記,因此加載事務(wù)104的線程還負(fù)責(zé)將104的內(nèi)容推送到對應(yīng)的表格中。換言之,填充“最舊的”空槽(例如,在沒有其事務(wù)ID比該槽小的其他空槽的意義上更舊)的線程變成插入線程。在一個(gè)示例中,插入線程保持“插入者”的角色并且向上移動插入所填充事務(wù)的事務(wù)時(shí)間線,直到其找到另一個(gè)空槽,在該點(diǎn)處線程回復(fù)到標(biāo)準(zhǔn)加載器線程??梢岳斫?,在以上方案中,單個(gè)線程可插入多個(gè)行而多個(gè)線程可加載多個(gè)行。然而,由于加載行的動作可卸下在表格中插入行的大部分工作,因此該限制未顯著地受限制。例如,加載器線程可為新的行指派存儲器,并且為新的行計(jì)算插入位置(例如,以供散列索引)。因此,為插入行保留的全部將行移動到其預(yù)計(jì)算的位置。還可以理解,在以上方案中,行插入不需要使用完整事務(wù)。盡管插入需要以正確的次序找到并施加紀(jì)錄,但插入不需要做任何確認(rèn)、后處理或日志記錄(雖然無用信息收集仍然可能需要執(zhí)行)。在第二示例中,插入并行化可如下實(shí)現(xiàn)。負(fù)載掃描預(yù)處理并行化方案示出了如何能并行地執(zhí)行多個(gè)日志流加載。在以上方案中,可以理解,僅有的串行化點(diǎn)是“插入”線程。然而,另外可以理解,沒有插入線程的性質(zhì)需要在系統(tǒng)中是唯一的。因此,假定還允許加載器線程插入行,可導(dǎo)出在插入所有行之后導(dǎo)致一致數(shù)據(jù)庫的方案。在一個(gè)實(shí)施例中,假定日志和檢查點(diǎn)兩者都包含行的完整映像(包括時(shí)間戳),可在逐行的基礎(chǔ)上而非在事務(wù)幅度范圍內(nèi)建立時(shí)間線。由于使用多個(gè)插入線程,因此可以理解,行可被處理并且準(zhǔn)備好無序地插入索引。這可以各種方式來處理;例如,基于將足夠的信息留在索引中,可采用各種技術(shù)來向后續(xù)的順序插入指示關(guān)于未來插入的那些信息在別處可用。這可通過例如重影(ghost)紀(jì)錄和/或任何類型的延遲工作項(xiàng)的指示器或其他合適的指示器來實(shí)現(xiàn)。在第三示例中,可另外實(shí)現(xiàn)檢查點(diǎn)并行化。例如,檢查點(diǎn)加載可與日志的加載并行地開始。這可通過在分析結(jié)束時(shí)將系統(tǒng)放在開始檢查點(diǎn)加載(本身并行的給定的多個(gè)檢查點(diǎn)流)和日志加載兩者的位置來增強(qiáng)性能。換言之,在先前方案中,可以理解延遲了重做,直到檢查點(diǎn)被加載到存儲器。然而,如果插入并行化被應(yīng)用于日志加載和檢查點(diǎn)加載兩者,則可并行地處理所有數(shù)據(jù)流以使處理與重做日志掃描同時(shí)完成。在一個(gè)實(shí)施例中,可使用與實(shí)現(xiàn)插入并行化中所使用的機(jī)制類似的機(jī)制來實(shí)現(xiàn)檢查點(diǎn)并行化。另外,為了支持檢查點(diǎn)并行化,足夠的信息可被保存(例如,在日志和檢查點(diǎn)兩者中)以能夠完全重建行,包括報(bào)頭時(shí)間戳。在一個(gè)示例中,由于主密鑰提供了一種唯一地標(biāo)識行而無需具有其完整內(nèi)容的方式,因此其存在允許放松對“完整行”的要求。示例性聯(lián)網(wǎng)和分布式環(huán)境本領(lǐng)域技術(shù)人員可以理解,此處所述的數(shù)據(jù)庫回復(fù)系統(tǒng)和方法的各實(shí)施例可結(jié)合任何計(jì)算機(jī)或其他客戶機(jī)或服務(wù)器設(shè)備來實(shí)現(xiàn),該任何計(jì)算機(jī)或其他客戶機(jī)或服務(wù)器設(shè)備可作為計(jì)算機(jī)網(wǎng)絡(luò)的一部分來部署或者被部署在分布式計(jì)算環(huán)境中,并且可連接到任何種類的數(shù)據(jù)存儲。在這點(diǎn)上,此處所述的各實(shí)施例可在具有任意數(shù)量的存儲器或存儲單元以及出現(xiàn)在任意數(shù)量的存儲單元上的任意數(shù)量的應(yīng)用程序和進(jìn)程的任何計(jì)算機(jī)系統(tǒng)和環(huán)境中實(shí)現(xiàn)。這包括但不限于具有部署在具有遠(yuǎn)程或本地存儲的網(wǎng)絡(luò)環(huán)境或分布式計(jì)算環(huán)境中的服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)的環(huán)境。24分布式計(jì)算通過計(jì)算設(shè)備和系統(tǒng)之間的通信交換來提供計(jì)算機(jī)資源和服務(wù)的共享。這些資源和服務(wù)包括信息的交換、對于諸如文件之類的對象的高速緩存存儲和盤存儲。這些資源和服務(wù)還包括多個(gè)處理單元之間的處理能力共享以便進(jìn)行負(fù)載平衡、資源擴(kuò)展、處理專門化等等。分布式計(jì)算利用網(wǎng)絡(luò)連接,從而允許客戶機(jī)利用其集體力量來使整個(gè)企業(yè)受益。在這點(diǎn)上,各種設(shè)備可具有可如參考本主題公開內(nèi)容的各實(shí)施例所述的參與恢復(fù)機(jī)制的應(yīng)用程序、對象或資源。圖15提供了示例性的聯(lián)網(wǎng)或分布式計(jì)算環(huán)境的示意圖。該分布式計(jì)算環(huán)境包括計(jì)算對象1510、1512等以及計(jì)算對象或設(shè)備1520、1522、1524、1526,1528等,這些計(jì)算對象或設(shè)備可包括如應(yīng)用程序1530、1532、1534、1536、1538所表示的程序、方法、數(shù)據(jù)存儲、可編程邏輯等??梢岳斫?,計(jì)算對象1510、1512等以及計(jì)算對象或設(shè)備1520、1522、1524、1526,1528等可包括不同的設(shè)備,諸如PDA、音頻/視頻設(shè)備、移動電話、MP3播放器、個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)等。每個(gè)計(jì)算對象1510、1512等以及計(jì)算對象或設(shè)備1520、1522、15M、1526、15等可經(jīng)由通信網(wǎng)絡(luò)1540直接或間接地與一個(gè)或多個(gè)其他計(jì)算對象1510、1512等以及計(jì)算對象或設(shè)備1520、1522、1524、1526,1528等通信。盡管在圖15中被示為單個(gè)元件,但通信網(wǎng)絡(luò)1540可包括向圖15的系統(tǒng)提供服務(wù)的其他計(jì)算對象或計(jì)算設(shè)備和/或可表示未示出的多個(gè)互連網(wǎng)絡(luò)。每計(jì)算對象1510、1512等或計(jì)算對象或設(shè)備1520、1522、15M、1526、15等還可包含應(yīng)用程序,諸如可以利用API或其他對象、軟件、固件和/或硬件的、適于與本主題公開內(nèi)容的各實(shí)施例通信或?qū)崿F(xiàn)本主題公開內(nèi)容的各實(shí)施例的應(yīng)用程序1530、1532、1534、1536、1538。存在支持分布式計(jì)算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng)可由有線或無線系統(tǒng)、本地網(wǎng)絡(luò)或廣泛分布的網(wǎng)絡(luò)連接在一起。當(dāng)前,許多網(wǎng)絡(luò)耦合到因特網(wǎng),因特網(wǎng)為廣泛分布的計(jì)算提供了基礎(chǔ)結(jié)構(gòu)并且包含許多不同的網(wǎng)絡(luò),但任何網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)可用于變得與如各實(shí)施例中所述的數(shù)據(jù)恢復(fù)系統(tǒng)相關(guān)聯(lián)的示例性通信。由此,可使用諸如客戶機(jī)/服務(wù)器、對等、或混合體系結(jié)構(gòu)之類的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的主機(jī)?!翱蛻魴C(jī)”是使用與其無關(guān)的另一類或組的服務(wù)的一類或組中的成員??蛻魴C(jī)可以是進(jìn)程,即大致上是請求另一程序或進(jìn)程所提供的服務(wù)的一組指令或任務(wù)。客戶機(jī)進(jìn)程使用所請求的服務(wù),而無需“知道”關(guān)于其他程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中,尤其在聯(lián)網(wǎng)系統(tǒng)中,客戶機(jī)通常是訪問另一計(jì)算機(jī)(例如,服務(wù)器)所提供的共享網(wǎng)絡(luò)資源的計(jì)算機(jī)。在附圖15的圖示中,作為非限制性示例,計(jì)算對象或設(shè)備1520、1522、15M、1526、15等可被認(rèn)為是客戶機(jī)而計(jì)算對象1510、1512等可被認(rèn)為是服務(wù)器,其中計(jì)算對象1510、1512等作為提供數(shù)據(jù)服務(wù)的服務(wù)器,諸如從客戶機(jī)計(jì)算對象或設(shè)備1520、1522、15對、1526、15觀等接收數(shù)據(jù)、存儲數(shù)據(jù)、處理數(shù)據(jù)、向客戶機(jī)計(jì)算對象或設(shè)備1520、1522、15M、1526、15等發(fā)送數(shù)據(jù),但任何計(jì)算機(jī)都可取決于環(huán)境而被認(rèn)為是客戶機(jī)、服務(wù)器、或兩者。這些計(jì)算設(shè)備中的任一個(gè)可處理數(shù)據(jù)、或請求可暗示如此處參考一個(gè)或多個(gè)實(shí)施例所述的恢復(fù)技術(shù)的事務(wù)服務(wù)或任務(wù)。服務(wù)器通常是可通過諸如因特網(wǎng)或無線網(wǎng)絡(luò)基礎(chǔ)架構(gòu)之類的遠(yuǎn)程網(wǎng)絡(luò)或本地網(wǎng)絡(luò)訪問的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)??蛻魴C(jī)進(jìn)程可在第一計(jì)算機(jī)系統(tǒng)中活動,而服務(wù)器進(jìn)程可在第二計(jì)算機(jī)系統(tǒng)中活動,它們通過通信介質(zhì)相互通信,由此提供分布式功能并允許多個(gè)客戶25機(jī)利用服務(wù)器的信息收集能力。按照此處所述的技術(shù)來利用的任何軟件對象可單獨(dú)提供或分布多個(gè)計(jì)算設(shè)備或?qū)ο笊稀T谕ㄐ啪W(wǎng)絡(luò)1540或總線是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,例如,計(jì)算對象1510、1512等可以是其他計(jì)算對象或設(shè)備1520、1522、15對、1526、15觀等經(jīng)由諸如超文本傳輸協(xié)議(HTTP)之類的多種已知協(xié)議中的任一種與其通信的Web服務(wù)器。計(jì)算對象1510、1512等作為服務(wù)器還可用作例如計(jì)算對象或設(shè)備1520、1522、15M、1526、15的客戶機(jī),這可以是如分布式計(jì)算環(huán)境的特性。示例性計(jì)算設(shè)備如所述的,有利的是,此處所述的技術(shù)可適用于期望執(zhí)行數(shù)據(jù)庫恢復(fù)的任何設(shè)備。因此,應(yīng)當(dāng)理解,構(gòu)想了所有種類的手持式、便攜式和其他計(jì)算設(shè)備和計(jì)算對象以供結(jié)合各實(shí)施例來使用,即,在設(shè)備可能希望從數(shù)據(jù)存儲讀事務(wù)或向數(shù)據(jù)存儲寫事務(wù)的任何地方。因此,以下在圖16中所述的通用遠(yuǎn)程計(jì)算機(jī)只是計(jì)算設(shè)備的一個(gè)示例。另外,數(shù)據(jù)庫服務(wù)器可包括以下通用計(jì)算機(jī)或其他數(shù)據(jù)庫管理服務(wù)器組件的一個(gè)或多個(gè)方面。盡管并非所需,但各實(shí)施例可部分地經(jīng)由操作系統(tǒng)來實(shí)現(xiàn),以供設(shè)備或?qū)ο蟮姆?wù)開發(fā)者使用和/或被包括在用于執(zhí)行此處所述的各實(shí)施例的一個(gè)或多個(gè)功能方面的應(yīng)用軟件內(nèi)。軟件可在諸如客戶機(jī)工作站、服務(wù)器或其他設(shè)備之類的一個(gè)或多個(gè)計(jì)算機(jī)所執(zhí)行的諸如程序模塊之類的計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述。本領(lǐng)域的技術(shù)人員可以理解,計(jì)算機(jī)系統(tǒng)具有可用于傳遞數(shù)據(jù)的各種配置和協(xié)議,并且由此沒有特定配置或協(xié)議應(yīng)當(dāng)被認(rèn)為是限制性的。由此,圖16示出其中可實(shí)現(xiàn)各實(shí)施例的一個(gè)或多個(gè)方面的合適的計(jì)算系統(tǒng)環(huán)境1600的一個(gè)示例,盡管如上所清楚描述的,計(jì)算系統(tǒng)環(huán)境1600只是合適的計(jì)算環(huán)境的一個(gè)示例,并且不旨在對使用范圍或功能提出任何限制。也不應(yīng)當(dāng)將計(jì)算系統(tǒng)環(huán)境1600解釋為對在示例性計(jì)算系統(tǒng)環(huán)境1600中所示的組件中的任何一個(gè)或其組合有任何依賴或要求。參考圖16,用于實(shí)現(xiàn)一個(gè)或多個(gè)實(shí)施例的示例性遠(yuǎn)程設(shè)備包括計(jì)算機(jī)1610形式的通用計(jì)算設(shè)備。計(jì)算機(jī)1610的組件可包括,但不限于,處理單元1620、系統(tǒng)存儲器1630、以及將包括系統(tǒng)存儲器的各種系統(tǒng)組件耦合到處理單元1620的系統(tǒng)總線1622。計(jì)算機(jī)1610通常包括各種計(jì)算機(jī)可讀介質(zhì),并且可以是可由計(jì)算機(jī)1610訪問的任何可用介質(zhì)。系統(tǒng)存儲器1630可包括諸如只讀存儲器(ROM)和/或隨機(jī)存取存儲器(RAM)之類的易失性和/或非易失性存儲器形式的計(jì)算機(jī)存儲介質(zhì)。作為示例而非限制,系統(tǒng)存儲器1630還可包括操作系統(tǒng)、應(yīng)用程序、其他程序模塊、以及程序數(shù)據(jù)。用戶可通過輸入設(shè)備1640向計(jì)算機(jī)1610輸入命令和信息。監(jiān)視器或其他類型的顯示設(shè)備也經(jīng)由諸如輸出接口1650之類的接口連接到系統(tǒng)總線1622。除監(jiān)視器以外,計(jì)算機(jī)還可包括諸如揚(yáng)聲器和打印機(jī)之類的其他外圍輸出設(shè)備,它們可通過輸出接口1650連接。計(jì)算機(jī)1610可使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)(諸如遠(yuǎn)程計(jì)算機(jī)1670)的邏輯連接在聯(lián)網(wǎng)或分布式環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)1670可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見網(wǎng)絡(luò)節(jié)點(diǎn)、或者任何其他遠(yuǎn)程媒體消費(fèi)或傳輸設(shè)備,并且可包括以上關(guān)于計(jì)算機(jī)1610所述的任何或全部元件。圖16所示的邏輯連接包括諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)之類的網(wǎng)絡(luò)1672,但也可包括其他網(wǎng)絡(luò)/總線。這些聯(lián)網(wǎng)環(huán)境在家庭、辦公26室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。如上所述,盡管結(jié)合各種計(jì)算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)描述了各示例性實(shí)施例,但基本概念可被應(yīng)用于期望便于恢復(fù)數(shù)據(jù)庫系統(tǒng)的任何網(wǎng)絡(luò)系統(tǒng)和任何計(jì)算設(shè)備或系統(tǒng)。而且,存在實(shí)現(xiàn)相同或類似功能的多種方式,例如適當(dāng)?shù)腁PI、工具箱、驅(qū)動器代碼、操作系統(tǒng)、控件、獨(dú)立或可下載軟件對象等,它們使得應(yīng)用和服務(wù)能夠利用數(shù)據(jù)庫恢復(fù)技術(shù)。由此,此處的各實(shí)施例從API(或其他軟件對象)的觀點(diǎn)以及從實(shí)現(xiàn)此處所述的機(jī)制的一個(gè)或多個(gè)方面的軟件或硬件對象進(jìn)行構(gòu)想。由此,此處所述的各實(shí)施例可具有完全采用硬件、部分采用硬件并且部分采用軟件、以及采用軟件的方面。本文中所使用的詞語“示例性”意味著用作示例、實(shí)例、或說明。為避免疑惑,本文所公開的主題不限于這些示例。另外,本文中作為“示例性”所述的任何方面或設(shè)計(jì)不一定被解釋為比其他方面或設(shè)計(jì)更優(yōu)選或有利,它也不意味著排除本領(lǐng)域普通技術(shù)人員已知的等效示例性結(jié)構(gòu)和技術(shù)。此外,在使用術(shù)語“包括”、“具有”、“包含”和其他類似詞語的程度上,為避免疑惑,這些術(shù)語旨在以類似于術(shù)語“包括”作為開放的過渡詞的方式是包含性的而不排除任何附加或其他元素。如所述的,此處所述的各種技術(shù)可結(jié)合硬件或軟件,或在適當(dāng)時(shí)以兩者的組合來實(shí)現(xiàn)。如此處所使用的,術(shù)語“組件”、“系統(tǒng)”等同樣旨在指計(jì)算機(jī)相關(guān)實(shí)體,或者是硬件、硬件和軟件的組合、軟件或者是執(zhí)行中的軟件。例如,組件可以是,但不限于,在處理器上運(yùn)行的進(jìn)程、處理器、對象、可執(zhí)行碼、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說明,在計(jì)算機(jī)上運(yùn)行的應(yīng)用程序和計(jì)算機(jī)都可以是組件。一個(gè)或多個(gè)組件可駐留在進(jìn)程和/或執(zhí)行的線程內(nèi),并且組件可位于一個(gè)計(jì)算機(jī)上和/或分布在兩個(gè)或更多的計(jì)算機(jī)之間。如前所述的系統(tǒng)已經(jīng)參考若干組件之間的交互來描述。可以理解,這些系統(tǒng)和組件可包括組件或指定的子組件、某些指定的組件或子組件和/或附加的組件,并且根據(jù)上述內(nèi)容的各種置換和組合。子組件還可作為通信地耦合到其他組件的組件來實(shí)現(xiàn),而不是被包括在父組件內(nèi)(層次性)。另外,應(yīng)當(dāng)注意,一個(gè)或多個(gè)組件可被組合成提供聚集功能的單個(gè)組件,或被分成若干單獨(dú)的子組件,并且諸如管理層之類的任何一個(gè)或多個(gè)中間層可被設(shè)置成通信地耦合到這些子組件以便提供集成功能。此處所述的任何組件也可與一個(gè)或多個(gè)此處未專門描述的但本領(lǐng)域技術(shù)人員一般已知的其他組件進(jìn)行交互。鑒于以上所述的示例性系統(tǒng),參考各附圖的流程圖還可理解根據(jù)所述的主題實(shí)現(xiàn)的方法。盡管為了說明簡潔起見,作為一系列框示出和描述的方法,但是應(yīng)當(dāng)理解,各實(shí)施例不僅僅限于框的次序,因?yàn)橐恍┛蚩梢耘c此處所描繪和描述的框不同的次序發(fā)生和/或與其他框并發(fā)地發(fā)生。盡管經(jīng)由流程圖示出了非順序或分支的流程,但可以理解,可實(shí)現(xiàn)達(dá)到相同或類似結(jié)果的各種其他分支、流程路徑和框的次序。此外,并非全部所示的框都是實(shí)現(xiàn)下面所述的方法所必需的。除此處所述的各實(shí)施例以外,應(yīng)當(dāng)理解,可使用其他類似實(shí)施例,或者可對所述實(shí)施例作出修改和添加以便執(zhí)行對應(yīng)實(shí)施例的相同或等效功能而不背離這些實(shí)施例。此外,多個(gè)處理芯片或多個(gè)設(shè)備可共享此處所述的一個(gè)或多個(gè)功能的性能,并且類似地,存儲可跨多個(gè)設(shè)備實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)限于任何單個(gè)實(shí)施例,而是應(yīng)當(dāng)根據(jù)所附權(quán)利要求書的廣度、精神和范圍來解釋。2權(quán)利要求1.一種數(shù)據(jù)庫管理系統(tǒng),包括日志管理器組件(530),所述日志管理器組件(530)被配置成以邏輯日志記錄格式生成與對至少一個(gè)數(shù)據(jù)存儲(500、502)中的數(shù)據(jù)進(jìn)行操作的事務(wù)相關(guān)的一個(gè)或多個(gè)日志記錄(320);以及其中與逆轉(zhuǎn)所述事務(wù)相關(guān)的信息響應(yīng)于提交所述事務(wù)被丟棄。2.根據(jù)權(quán)利要求1所述的系統(tǒng),還包括被配置成存儲與各個(gè)事務(wù)相對應(yīng)的信息的至少一個(gè)持久數(shù)據(jù)存儲;以及被配置成防止將對應(yīng)于一個(gè)或多個(gè)未提交事務(wù)的數(shù)據(jù)寫入所述至少一個(gè)持久數(shù)據(jù)存儲的組件。3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述日志管理器組件(530)還被配置成將對所述至少一個(gè)數(shù)據(jù)存儲(500、502)中的數(shù)據(jù)進(jìn)行操作的多個(gè)事務(wù)記錄在所述一個(gè)或多個(gè)日志記錄(320)中。4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述日志管理器組件(530)包括被配置成維護(hù)一個(gè)或多個(gè)日志流(640)的日志流管理組件(540、610、720),所述一個(gè)或多個(gè)日志流(640)與各個(gè)日志記錄(320)相關(guān)聯(lián)。5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述日志流管理組件640、610、720)還被配置成至少部分地通過合并所述一個(gè)或多個(gè)日志流(640)中的至少一個(gè)日志流或拆分所述一個(gè)或多個(gè)日志流(640)中的至少一個(gè)日志流來管理對所述一個(gè)或多個(gè)日志流(640)的重組。6.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述日志管理組件640、610、720)還被配置成以并行方式加載多個(gè)日志流(640)。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述日志管理組件(530)還被配置成便于將與所述多個(gè)日志流(640)相對應(yīng)的各個(gè)數(shù)據(jù)庫行以并行方式插入與所述至少一個(gè)數(shù)據(jù)存儲(500,502)相對應(yīng)的索引。8.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述日志管理組件(530)還被配置成將事務(wù)的開始時(shí)間和所述事務(wù)的結(jié)束時(shí)間記錄到所述一個(gè)或多個(gè)日志記錄(320)中,并且所述系統(tǒng)還包括恢復(fù)組件(560),所述恢復(fù)組件(560)被配置成至少部分地通過以基于如其各個(gè)日志記錄(320)中所記錄的事務(wù)的開始時(shí)間和結(jié)束時(shí)間所確定的次序應(yīng)用經(jīng)由各個(gè)日志記錄(320)所記錄的事務(wù),來重建所述至少一個(gè)數(shù)據(jù)存儲(500、502)的操作狀態(tài)。9.根據(jù)權(quán)利要求1所述的系統(tǒng),還包括恢復(fù)子系統(tǒng)集成組件(850),所述恢復(fù)子系統(tǒng)集成組件(850)被配置成將所述日志管理組件(530)的各個(gè)事務(wù)日志記錄與至少一個(gè)不同的數(shù)據(jù)庫系統(tǒng)(830)的各個(gè)日志記錄集成、由此創(chuàng)建公共日志(860)的外觀,所述公共日志(860)包括所述日志管理組件(530)的事務(wù)日志記錄和所述至少一個(gè)不同的數(shù)據(jù)庫系統(tǒng)(830)的事務(wù)日志記錄。10.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述日志管理組件(530)包括檢查點(diǎn)操作組件(550),所述檢查點(diǎn)操作組件(550)被配置成在無需參考所述至少一個(gè)數(shù)據(jù)存儲(500、502)中的各個(gè)物理位置的情況下生成指示所述至少一個(gè)數(shù)據(jù)存儲(500、502)的狀態(tài)的至少一個(gè)檢查點(diǎn)。11.根據(jù)權(quán)利要求1所述的系統(tǒng),還包括事務(wù)處理組件(520),所述事務(wù)處理組件(520)被配置成經(jīng)由其中與所述事務(wù)相對應(yīng)的恢復(fù)信息被持久地記錄的物理提交(400)、其中所述事務(wù)所引起的至少一個(gè)數(shù)據(jù)存儲(500,502)中的數(shù)據(jù)的改變對所述至少一個(gè)數(shù)據(jù)存儲(500、502)內(nèi)的其他事務(wù)是可見的邏輯提交G10)、以及其中所述事務(wù)的結(jié)果對所述至少一個(gè)數(shù)據(jù)存儲(500、50幻外部的實(shí)體可用的可見提交(420)來提交所述事務(wù)。12.一種用于維護(hù)數(shù)據(jù)庫恢復(fù)系統(tǒng)的方法,包括接收與對至少一個(gè)存儲器內(nèi)數(shù)據(jù)存儲中的數(shù)據(jù)進(jìn)行操作的事務(wù)相關(guān)的信息(1000);根據(jù)邏輯日志記錄格式將所述事務(wù)日志記錄在一個(gè)或多個(gè)日志記錄中(1010);響應(yīng)于提交所述事務(wù),丟棄與所述事務(wù)相關(guān)的逆轉(zhuǎn)信息(1020);以及防止將對應(yīng)于一個(gè)或多個(gè)未提交事務(wù)的數(shù)據(jù)寫入至少一個(gè)對應(yīng)的持久數(shù)據(jù)存儲(1030)。13.根據(jù)權(quán)利要求12所述的方法,還包括維護(hù)多個(gè)日志流;其中所述日志記錄包括使用從所述多個(gè)日志流選擇的日志流來日志記錄所述事務(wù)。14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述維護(hù)包括將各個(gè)輸入/輸出設(shè)備分配給所述多個(gè)日志流中的各個(gè)日志流。15.根據(jù)權(quán)利要求12所述的方法,還包括在無需參考所述至少一個(gè)存儲器內(nèi)數(shù)據(jù)存儲中的各個(gè)物理位置的情況下,生成與所述至少一個(gè)存儲器內(nèi)數(shù)據(jù)存儲的狀態(tài)相關(guān)的至少一個(gè)檢查點(diǎn)。全文摘要本發(fā)明涉及一種實(shí)現(xiàn)事務(wù)日志記錄的各方面以優(yōu)化數(shù)據(jù)庫恢復(fù)性能的數(shù)據(jù)庫恢復(fù)技術(shù)。事務(wù)被邏輯性地日志記錄而無需參考物理位置,這允許日志記錄經(jīng)由多個(gè)獨(dú)立的日志流并行地執(zhí)行。日志流集還可被調(diào)整成符合鏡像節(jié)點(diǎn)或副節(jié)點(diǎn)的局部配置以增加鏡像靈活性。另外,使用單個(gè)日志記錄來記錄各個(gè)事務(wù)或事務(wù)組,該日志記錄包含在無需參考物理檢查點(diǎn)文件的情況下實(shí)現(xiàn)數(shù)據(jù)庫恢復(fù)的時(shí)間戳信息。此外,在本文中提供了用于在無需提前寫入日志記錄或加固撤銷信息的情況下處理事務(wù)的技術(shù)。如在本文中進(jìn)一步所述的,可經(jīng)由分層階段集提交事務(wù),這進(jìn)而可便于存儲器內(nèi)數(shù)據(jù)庫系統(tǒng)與一個(gè)或多個(gè)外部數(shù)據(jù)庫系統(tǒng)的集成。文檔編號G06F11/14GK102436490SQ20111034618公開日2012年5月2日申請日期2011年10月28日優(yōu)先權(quán)日2010年10月28日發(fā)明者C·迪亞科努,M·茨維林,P-A·拉森申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1