国产精品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>

      數(shù)據(jù)回滾的處理方法和裝置制造方法

      文檔序號(hào):6527268閱讀:171來(lái)源:國(guó)知局
      數(shù)據(jù)回滾的處理方法和裝置制造方法
      【專利摘要】本發(fā)明實(shí)施例提供一種數(shù)據(jù)回滾的處理方法和裝置,該方法包括:當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段;所述回滾段用于存儲(chǔ)事務(wù)訪問(wèn)數(shù)據(jù)文件產(chǎn)生的回滾數(shù)據(jù);針對(duì)所述第一事務(wù),記錄第一回滾段的使用情況;根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中。通過(guò)該數(shù)據(jù)回滾的處理方法和裝置,可合理的對(duì)各個(gè)回滾段進(jìn)行管理,即在針對(duì)一個(gè)事務(wù)進(jìn)行回滾數(shù)據(jù)的存儲(chǔ)時(shí),不影響另一個(gè)事務(wù)對(duì)回滾數(shù)據(jù)的獲取,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性能。
      【專利說(shuō)明】數(shù)據(jù)回滾的處理方法和裝置
      【技術(shù)領(lǐng)域】
      [0001 ] 本發(fā)明實(shí)施例涉及數(shù)據(jù)庫(kù)【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)回滾的處理方法和裝置?!颈尘凹夹g(shù)】
      [0002]數(shù)據(jù)庫(kù)中包含大量的數(shù)據(jù),用戶可以通過(guò)數(shù)據(jù)庫(kù)事務(wù)(Database Transaction,下述簡(jiǎn)稱為事務(wù))訪問(wèn)該數(shù)據(jù)庫(kù),以獲得所需的結(jié)果。通常事務(wù)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),會(huì)使數(shù)據(jù)庫(kù)中的一些數(shù)據(jù)發(fā)生更新,出現(xiàn)新版本的數(shù)據(jù)。但現(xiàn)有的數(shù)據(jù)庫(kù)中,多個(gè)事務(wù)會(huì)同時(shí)執(zhí)行,則一個(gè)事務(wù)的訪問(wèn)造成了數(shù)據(jù)庫(kù)中數(shù)據(jù)的更新,導(dǎo)致另一個(gè)事務(wù)所使用的數(shù)據(jù)前后不一致,影響數(shù)據(jù)庫(kù)對(duì)用戶的服務(wù)。舉例來(lái)說(shuō),事務(wù)I在數(shù)據(jù)庫(kù)內(nèi)的一個(gè)數(shù)據(jù)文件中獲取了數(shù)據(jù)A,隨后事務(wù)2訪問(wèn)了該數(shù)據(jù)文件,并將該數(shù)據(jù)文件中的數(shù)據(jù)A更新為數(shù)據(jù)B,即此時(shí)數(shù)據(jù)A為舊版本數(shù)據(jù),而數(shù)據(jù)B為新版本數(shù)據(jù);若事務(wù)I需要再次訪問(wèn)該數(shù)據(jù)空間時(shí),則為了保證事務(wù)I前后獲取的數(shù)據(jù)一致,在事務(wù)2更新上述數(shù)據(jù)文件時(shí),需要將數(shù)據(jù)A作為回滾數(shù)據(jù)另行存儲(chǔ),以供事務(wù)I再次訪問(wèn)。
      [0003]常見的,Sql Server可使用臨時(shí)數(shù)據(jù)庫(kù)(Tempdb)的方式存儲(chǔ)回滾數(shù)據(jù)。Tempdb是一個(gè)臨時(shí)數(shù)據(jù)庫(kù),可被多個(gè)數(shù)據(jù)庫(kù)共享,貝1J回滾數(shù)據(jù)被存儲(chǔ)至tempdb中。其中,Sql Server使用了內(nèi)部對(duì)象(Append-Only Store)以管理tempdb中的數(shù)據(jù);即tempdb中的回滾數(shù)據(jù)被存儲(chǔ)至一個(gè)Append-Only Store中,每隔一段時(shí)間或Append-Only Store中積累一定數(shù)量的數(shù)據(jù)后,就會(huì)創(chuàng)建一個(gè)新的Append-Only Store,以繼續(xù)存儲(chǔ)回滾數(shù)據(jù)。
      [0004]但采用上述方案時(shí)發(fā)現(xiàn),多個(gè)事務(wù)會(huì)使用同一個(gè)Append-Only Store,使得多個(gè)事務(wù)的并發(fā)效率降低,影響各個(gè)事務(wù)訪問(wèn)回滾數(shù)據(jù)的效率,從而降低了數(shù)據(jù)庫(kù)的工作性能。

      【發(fā)明內(nèi)容】

      [0005]本發(fā)明實(shí)施例提供一種數(shù)據(jù)回滾的處理方法和裝置,用于合理的對(duì)各個(gè)回滾段進(jìn)行管理,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性能。
      [0006]第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)回滾的處理方法,包括:
      [0007]當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段;所述回滾段用于存儲(chǔ)事務(wù)訪問(wèn)數(shù)據(jù)文件產(chǎn)生的回滾數(shù)據(jù);
      [0008]針對(duì)所述第一事務(wù),記錄第一回滾段的使用情況;
      [0009]根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中;
      [0010]其中,所述各個(gè)列表包括重用列表、空閑列表和完成列表,所述重用列表中的每個(gè)回滾段中存儲(chǔ)了回滾數(shù)據(jù),且具有剩余存儲(chǔ)空間,所述空閑列表中的每個(gè)回滾段中無(wú)回滾數(shù)據(jù),所述完成列表中的每個(gè)回滾段中不具有剩余存儲(chǔ)空間。
      [0011]結(jié)合第一方面,在第一實(shí)施方式中,所述在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表中所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段,包括:
      [0012]若所述重用列表中包括至少一個(gè)回滾段,則確定重用列表中最先存儲(chǔ)的回滾段為所述第一回滾段,并在所述重用列表中刪除該最先存儲(chǔ)的回滾段;
      [0013]若所述重用列表中不包括所述回滾段,則在所述空閑列表中確定所述第一回滾段。
      [0014]結(jié)合第一方面第一實(shí)施方式,在第二實(shí)施方式中,所述在所述空閑列表中確定所述第一回滾段,包括:
      [0015]若所述空閑列表包括至少一個(gè)回滾段,則將所述空閑列表中的一個(gè)回滾段作為所述第一回滾段,并將所述空閑列表中的該回滾段刪除;
      [0016]若所述空閑列表不包括回滾段,則判斷所述數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量是否已達(dá)到上限;
      [0017]若否,創(chuàng)建新增回滾段作為所述第一回滾段;
      [0018]若是,則進(jìn)行清理算法,并在進(jìn)行了所述清理算法之后的空閑列表中,確定任意一個(gè)回滾段作為所述第一回滾段。
      [0019]結(jié)合第一方面第二實(shí)施方式,在第三實(shí)施方式中,所述清理算法包括:
      [0020]由所述完成列表中最先存儲(chǔ)的回滾段開始,依照存儲(chǔ)的先后順序,依次判斷出所述完成列表中可回收的回滾段;
      [0021]將所述可回收的回滾段由所述完成列表中刪除,并存儲(chǔ)至所述空閑列表中,獲得所述進(jìn)行了所述清理算法之后的空閑列表。
      [0022]結(jié)合第一方面第三實(shí)施方式,在第四實(shí)施方式中,所述判斷出所述完成列表中可回收的回滾段,包括:
      [0023]根據(jù)所述完成列表中的待判斷回滾段對(duì)應(yīng)的最新使用情況,確定所述最新使用情況對(duì)應(yīng)的第二事務(wù);
      [0024]若所述第二事務(wù)的訪問(wèn)時(shí)間不滯后于所述數(shù)據(jù)庫(kù)系統(tǒng)中的當(dāng)前事務(wù)的訪問(wèn)時(shí)間,則確定所述待判斷回滾段為所述可回收的回滾段。
      [0025]結(jié)合第一方面或第一方面第四實(shí)施方式,在第五實(shí)施方式中,所述根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的管理庫(kù)中,包括:
      [0026]若所述使用后的第一回滾段中不具有剩余存儲(chǔ)空間,則將所述使用后的第一回滾段存儲(chǔ)至所述完成列表,所述完成列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序;
      [0027]若所述使用后的第一回滾段中具有剩余存儲(chǔ)空間,則將所述第一回滾段存儲(chǔ)至所述重用列表,所述重用列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序。
      [0028]結(jié)合第一方面第五實(shí)施方式,在第六實(shí)施方式中,所述處理方法還包括:
      [0029]若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間小于預(yù)設(shè)閾值,則刪除所述空閑列表中的各個(gè)回滾段,并釋放所述空閑列表中的各個(gè)回滾段對(duì)應(yīng)的文件。
      [0030]在刪除了所述空閑列表中的各個(gè)回滾段之后,若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間仍小于預(yù)設(shè)閾值,則釋放所述重用列表中的可刪除回滾段。
      [0031]第二方面,本發(fā)明提供一種數(shù)據(jù)回滾的處理裝置,其特征在于,包括:
      [0032]確定模塊,用于當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段;所述回滾段用于存儲(chǔ)事務(wù)訪問(wèn)數(shù)據(jù)文件產(chǎn)生的回滾數(shù)據(jù);
      [0033]記錄模塊,用于針對(duì)所述第一事務(wù),記錄第一回滾段的使用情況;[0034]存儲(chǔ)模塊,用于根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中;
      [0035]其中,所述各個(gè)列表包括重用列表、空閑列表和完成列表,所述重用列表中的每個(gè)回滾段中存儲(chǔ)了回滾數(shù)據(jù),且具有剩余存儲(chǔ)空間,所述空閑列表中的每個(gè)回滾段中無(wú)回滾數(shù)據(jù),所述完成列表中的每個(gè)回滾段中不具有剩余存儲(chǔ)空間。
      [0036]結(jié)合第二方面,在第一實(shí)施方式中,所述確定模塊包括:
      [0037]第一處理單元,用于若所述重用列表中包括至少一個(gè)回滾段,則確定重用列表中最先存儲(chǔ)的回滾段為所述第一回滾段,并在所述重用列表中刪除該最先存儲(chǔ)的回滾段;
      [0038]第二處理單元,若所述重用列表中不包括所述回滾段,則在所述空閑列表中確定所述第一回滾段。
      [0039]結(jié)合第二方面第一實(shí)施方式,在第二實(shí)施方式中,所述第二處理單元具體用于
      [0040]若所述空閑列表包括至少一個(gè)回滾段,則將所述空閑列表中的一個(gè)回滾段作為所述第一回滾段,并將所述空閑列表中的該回滾段刪除;
      [0041]若所述空閑列表不包括回滾段,則所述第二處理單元觸發(fā)判斷模塊;
      [0042]所述判斷模塊用于判斷所述數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量是否已達(dá)到上限;
      [0043]若否,創(chuàng)建新增回滾段作為所述第一回滾段;
      [0044]若是,則進(jìn)行清理算法,并在進(jìn)行了所述清理算法之后的空閑列表中,確定任意一個(gè)回滾段作為所述第一回滾段。
      [0045]結(jié)合第二方面第二實(shí)施方式,在第三實(shí)施方式中,所述清理算法包括:
      [0046]由所述完成列表中最先存儲(chǔ)的回滾段開始,依照存儲(chǔ)的先后順序,依次判斷出所述完成列表中可回收的回滾段;
      [0047]將所述可回收的回滾段由所述完成列表中刪除,并存儲(chǔ)至所述空閑列表中,獲得所述進(jìn)行了所述清理算法之后的空閑列表。
      [0048]結(jié)合第二方面第三實(shí)施方式,在第四實(shí)施方式中,所述判斷模塊具體用于
      [0049]根據(jù)所述完成列表中的待判斷回滾段對(duì)應(yīng)的最新使用情況,確定所述最新使用情況對(duì)應(yīng)的第二事務(wù);
      [0050]若所述第二事務(wù)的訪問(wèn)時(shí)間不滯后于所述數(shù)據(jù)庫(kù)系統(tǒng)中的當(dāng)前事務(wù)的訪問(wèn)時(shí)間,則確定所述待判斷回滾段為所述可回收的回滾段。
      [0051]結(jié)合第二方面或第一方面第四實(shí)施方式,在第五實(shí)施方式中,所述存儲(chǔ)模塊具體用于
      [0052]若所述使用后的第一回滾段中不具有剩余存儲(chǔ)空間,則將所述使用后的第一回滾段存儲(chǔ)至所述完成列表,所述完成列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序;
      [0053]若所述使用后的第一回滾段中具有剩余存儲(chǔ)空間,則將所述第一回滾段存儲(chǔ)至所述重用列表,所述重用列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序。
      [0054]結(jié)合第二方面第五實(shí)施方式,在第六實(shí)施方式中,所述處理裝置還包括釋放模塊,用于
      [0055]若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間小于預(yù)設(shè)閾值,則刪除所述空閑列表中的各個(gè)回滾段,并釋放所述空閑列表中的各個(gè)回滾段對(duì)應(yīng)的文件。[0056]在刪除了所述空閑列表中的各個(gè)回滾段之后,若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間仍小于預(yù)設(shè)閾值,則釋放所述重用列表中的可刪除回滾段。
      [0057]本發(fā)明實(shí)施例提供的數(shù)據(jù)回滾的處理方法和裝置,通過(guò)向每一個(gè)有需要的事務(wù)分配回滾段,并記錄分配的回滾段的使用情況,則可合理的對(duì)各個(gè)回滾段進(jìn)行管理,即在針對(duì)一個(gè)事務(wù)進(jìn)行回滾數(shù)據(jù)的存儲(chǔ)時(shí),不影響另一個(gè)事務(wù)對(duì)回滾數(shù)據(jù)的獲取,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性能。
      【專利附圖】

      【附圖說(shuō)明】
      [0058]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0059]圖1為本發(fā)明數(shù)據(jù)回滾的處理方法實(shí)施例一的流程圖;
      [0060]圖2為本發(fā)明數(shù)據(jù)回滾的處理方法實(shí)施例二的流程圖;
      [0061]圖3為本發(fā)明數(shù)據(jù)回滾的處理方法實(shí)施例三的流程圖;
      [0062]圖4為本發(fā)明數(shù)據(jù)回滾的處理裝置實(shí)施例一的結(jié)構(gòu)圖;
      [0063]圖5為本發(fā)明數(shù)據(jù)回滾的處理裝置實(shí)施例二的結(jié)構(gòu)圖。
      【具體實(shí)施方式】
      [0064]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      [0065]圖1為本發(fā)明數(shù)據(jù)回滾的處理方法實(shí)施例一的流程圖。如圖1所示,本實(shí)施例的執(zhí)行主體為數(shù)據(jù)回滾的處理裝置,該處理裝置可以采用軟件和/或硬件的方式實(shí)現(xiàn),優(yōu)選的,該處理裝置可以集成在數(shù)據(jù)庫(kù)系統(tǒng)中,具體的,該方法包括:
      [0066]S101、當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于該第一事務(wù)的第一回滾段。
      [0067]上述回滾段(undo segment)用于存儲(chǔ)事務(wù)訪問(wèn)數(shù)據(jù)文件產(chǎn)生的回滾數(shù)據(jù);一個(gè)回滾段對(duì)應(yīng)于磁盤上的一個(gè)文件,各文件是在回滾段創(chuàng)建時(shí)生成,且各個(gè)文件所具有的存儲(chǔ)空間一定,例如一個(gè)回滾段在創(chuàng)建時(shí),對(duì)應(yīng)生成的文件所占用的存儲(chǔ)地址為0001?0025,無(wú)論該文件是否存儲(chǔ)了回滾數(shù)據(jù),該文件都占用存儲(chǔ)地址0001?0025 ;當(dāng)回滾數(shù)據(jù)需要存儲(chǔ)在回滾段中時(shí),各個(gè)回滾數(shù)據(jù)則存儲(chǔ)在存儲(chǔ)地址對(duì)應(yīng)的存儲(chǔ)空間中;而當(dāng)回滾段被釋放后,對(duì)應(yīng)的文件所占用的存儲(chǔ)地址也被釋放。其中回滾段的信息(如文件名,文件大小等)存放在系統(tǒng)表中,當(dāng)系統(tǒng)關(guān)閉或異常時(shí),回滾段信息不會(huì)丟失,而數(shù)據(jù)庫(kù)系統(tǒng)啟動(dòng)之后,該系統(tǒng)表會(huì)加載到共享內(nèi)存中,而且針對(duì)每一個(gè)回滾段來(lái)說(shuō),其使用情況(例如使用回滾段的事務(wù)的標(biāo)號(hào)、該事務(wù)使用的具體的存儲(chǔ)地址)也是被記錄的,則上述各個(gè)列表所存儲(chǔ)的各個(gè)回滾段,是指各個(gè)列表保存著各個(gè)回滾段的文件名(或其他用于指代回滾段的標(biāo)識(shí)信息),及各個(gè)回滾段的使用情況。[0068]S102、針對(duì)第一事務(wù),記錄第一回滾段的使用情況。
      [0069]第一事務(wù)在訪問(wèn)數(shù)據(jù)文件時(shí),使該數(shù)據(jù)文件中的數(shù)據(jù)發(fā)生更新,即數(shù)據(jù)文件中發(fā)生更新的各項(xiàng)數(shù)據(jù)為新版本數(shù)據(jù),而發(fā)生更新之前的各項(xiàng)數(shù)據(jù)為舊版本數(shù)據(jù);在本實(shí)施例中,為了不影響其他已經(jīng)獲取了舊版本數(shù)據(jù)的事務(wù)的正常執(zhí)行,因此將舊版本數(shù)據(jù)作為回滾數(shù)據(jù)存儲(chǔ)至分配于第一事務(wù)的第一回滾段中,同時(shí)新版本數(shù)據(jù)中記錄了舊版本數(shù)據(jù)在回滾段中的位置,這樣其他訪問(wèn)舊版本數(shù)據(jù)的事務(wù)再次訪問(wèn)數(shù)據(jù)文件,以期獲得舊版本數(shù)據(jù)時(shí),就可以根據(jù)上述新版本數(shù)據(jù)中所記錄的舊版本數(shù)據(jù)在回滾段中的位置,從第一回滾段中獲取到舊版本數(shù)據(jù),而不是被第一事務(wù)所更新的新版本數(shù)據(jù),從而保證數(shù)據(jù)庫(kù)訪問(wèn)的一致性。同時(shí)對(duì)于該第一回滾段來(lái)說(shuō),該第一回滾段的使用信息,即該第一回滾段被事務(wù)使用的具體信息(如使用第一回滾段的事務(wù)的編號(hào),訪問(wèn)時(shí)間等)也被記錄,以用于后續(xù)判斷該第一回滾段是否可以回收或清理。
      [0070]S103、根據(jù)第一回滾段的使用情況,將第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中。
      [0071]其中,各個(gè)列表包括重用列表、空閑列表和完成列表,上述重用列表中的每個(gè)回滾段中存儲(chǔ)了回滾數(shù)據(jù),且具有剩余存儲(chǔ)空間,上述空閑列表中的每個(gè)回滾段中無(wú)回滾數(shù)據(jù),上述完成列表中的每個(gè)回滾段中不具有剩余存儲(chǔ)空間。例如一個(gè)回滾段占用的存儲(chǔ)地址為0001?0025,該回滾段中存儲(chǔ)了回滾數(shù)據(jù),而回滾數(shù)據(jù)僅占用了存儲(chǔ)地址0001?0005,則存儲(chǔ)地址0006?0025則為上述剩余存儲(chǔ)空間;另外,回滾段中存儲(chǔ)地址0001?0025沒有存儲(chǔ)回滾數(shù)據(jù),則該回滾段所擁有的全部存儲(chǔ)地址所對(duì)應(yīng)的存儲(chǔ)空間,也可被理解為該回滾段的剩余存儲(chǔ)空間。
      [0072]根據(jù)第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中,則便于向下一個(gè)事務(wù)分配合適的回滾段,例如回滾段中已無(wú)剩余存儲(chǔ)空間,則該回滾段被存儲(chǔ)至完成列表中,從而當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到另一個(gè)事務(wù)時(shí),不會(huì)向所述另一個(gè)事務(wù)分配上述無(wú)剩余存儲(chǔ)空間的回滾段,而是在重用列表或空閑列表中確定具有剩余存儲(chǔ)空間的回滾段,與此同時(shí),若數(shù)據(jù)庫(kù)系統(tǒng)接收的事務(wù)需要獲取已有的回滾數(shù)據(jù),且該回滾數(shù)據(jù)被存儲(chǔ)在上述無(wú)剩余存儲(chǔ)空間的回滾段內(nèi),則該無(wú)剩余存儲(chǔ)空間的回滾段也可同時(shí)被其他事務(wù)使用,以獲取已有的回滾數(shù)據(jù),保證了多個(gè)事務(wù)的并發(fā)特性。
      [0073]另外需要說(shuō)明的是,本實(shí)例中的第一事務(wù)為包含更新操作的事務(wù)。插入、刪除操作由于不會(huì)造成新版本數(shù)據(jù)和舊版本的更替,因而不需要在回滾段中記錄舊版本數(shù)據(jù)。本實(shí)施例中,向每一個(gè)有需要的事務(wù)分配回滾段,并記錄分配的回滾段的使用情況,則可合理的對(duì)各個(gè)回滾段進(jìn)行管理,即在針對(duì)一個(gè)事務(wù)進(jìn)行回滾數(shù)據(jù)的存儲(chǔ)時(shí),不影響另一個(gè)事務(wù)對(duì)回滾數(shù)據(jù)的獲取,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性能。
      [0074]圖2為本發(fā)明數(shù)據(jù)回滾的處理方法實(shí)施例二的流程圖。如圖2所示,本實(shí)施例是在圖1所示的實(shí)施例的基礎(chǔ)上做出進(jìn)一步描述,具體的,該方法包括:
      [0075]S201、當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),判斷重用列表中是否包括至少一個(gè)回滾段。若是,則執(zhí)行S202 ;若否,執(zhí)行S203。
      [0076]由于重用列表中的每個(gè)回滾段中存儲(chǔ)了回滾數(shù)據(jù),且具有剩余存儲(chǔ)空間,則數(shù)據(jù)回滾的處理裝置在確定第一回滾段時(shí)(即執(zhí)行前述S101),需要先查看重用列表,并判斷重用列表中是否包括至少一個(gè)回滾段。
      [0077]S202、確定重用列表中最先存儲(chǔ)的回滾段為第一回滾段,并在重用列表中刪除該最先存儲(chǔ)的回滾段。
      [0078]若所述重用列表中包括至少一個(gè)回滾段,即重用列表中存儲(chǔ)的各個(gè)回滾段有剩余存儲(chǔ)空間,可以繼續(xù)存儲(chǔ)回滾數(shù)據(jù);而且重用列表中最先存儲(chǔ)的回滾段中已有的回滾數(shù)據(jù)相較于重用列表中其他回滾段中的回滾數(shù)據(jù)來(lái)說(shuō),被再次使用的概率較低,則該最先存儲(chǔ)的回滾段被分配給第一事務(wù)以后并在第一事務(wù)使用的過(guò)程中,其他事務(wù)需要使用該最先存儲(chǔ)的回滾段中已有的回滾數(shù)據(jù)的可能性也較小,則可有效避免發(fā)生事務(wù)爭(zhēng)搶同一個(gè)回滾段的沖突,從而可保證各個(gè)事務(wù)之間的并發(fā)特性。例如,重用列表中最先存儲(chǔ)的回滾段I中存儲(chǔ)了回滾數(shù)據(jù)01,則說(shuō)明該回滾段I對(duì)應(yīng)的數(shù)據(jù)文件I發(fā)生更新的時(shí)間較早,則當(dāng)前訪問(wèn)該數(shù)據(jù)文件I的各個(gè)事務(wù)大部分或全部已經(jīng)是按照更新后的數(shù)據(jù)文件I在執(zhí)行,而其他使用了數(shù)據(jù)文件I中舊版本的數(shù)據(jù)的事務(wù),也在當(dāng)前時(shí)刻之前通過(guò)使用回滾段I中的回滾數(shù)據(jù)01,以數(shù)據(jù)的一致性執(zhí)行完成,則在當(dāng)前時(shí)刻,數(shù)據(jù)庫(kù)系統(tǒng)中需要再次使用回滾數(shù)據(jù)01的事務(wù)的概率較小,則將該回滾段I分配給第一事務(wù)后,其他事務(wù)與第一事務(wù)爭(zhēng)搶回滾段I的概率也是極小的,因此可以保證第一事務(wù)與其他事務(wù)之間的并發(fā)效率;而且在確定重用列表中最先存儲(chǔ)的回滾段為第一回滾段之后,在重用列表中刪除該最先存儲(chǔ)的回滾段,避免將同一個(gè)回滾段分配給其他需要存儲(chǔ)新增回滾數(shù)據(jù)的事務(wù)。
      [0079]通常來(lái)說(shuō),重用列表中各個(gè)回滾段可以按照存儲(chǔ)的先后順序依次排列,則最先存儲(chǔ)的回滾段被排在重用列表的頭部,而最新存儲(chǔ)的回滾段則存儲(chǔ)在重用列表中尾部;可選的,各個(gè)回滾段可以不用排序,則數(shù)據(jù)回滾的處理裝置可以根據(jù)各個(gè)回滾段對(duì)應(yīng)的使用信息中的時(shí)間信息,判斷出先存儲(chǔ)的回滾段。
      [0080]S203、判斷空閑列表中是否存在至少一個(gè)回滾段。若是,執(zhí)行S204 ;若否,執(zhí)行S205。
      [0081]即重用列表中不包括回滾段,則需在空閑列表中確定第一回滾段;但空閑列表中也不存在回滾段時(shí),則需執(zhí)行S203。
      [0082]S204、將空閑列表中的一個(gè)回滾段作為第一回滾段,并將空閑列表中的該回滾段刪除。
      [0083]與S202中的重用列表類似,將空閑列表中的一個(gè)回滾段作為第一回滾段之后,需將空閑列表中的該回滾段刪除,避免將同一個(gè)回滾段分配給不同的事務(wù)。
      [0084]S205、判斷數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量是否已達(dá)到上限。若否,執(zhí)行S206 ;若是,則執(zhí)行S207。
      [0085]數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量是指各個(gè)列表中存儲(chǔ)的回滾段的數(shù)量和已被分配出去的回滾段的數(shù)量。
      [0086]S206、創(chuàng)建新增回滾段作為第一回滾段。
      [0087]即針對(duì)第一事務(wù),直接創(chuàng)建一個(gè)回滾段,并分配給該第一事務(wù)。
      [0088]S207、進(jìn)行清理算法,并在進(jìn)行了清理算法之后的空閑列表中,確定任意一個(gè)回滾段作為第一回滾段。
      [0089]當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量已達(dá)到上限,說(shuō)明數(shù)據(jù)庫(kù)系統(tǒng)中已經(jīng)不存在可以使用的回滾段以供第一事務(wù)存儲(chǔ)其產(chǎn)生的回滾數(shù)據(jù),因此,需要對(duì)各個(gè)列表中各個(gè)回滾段中的回滾數(shù)據(jù)進(jìn)行清理,即將那些不再被使用的回滾數(shù)據(jù)進(jìn)行清理,以便第一事務(wù)可獲得具有剩余存儲(chǔ)空間的回滾段,從而可以存儲(chǔ)該第一事務(wù)產(chǎn)生的回滾數(shù)據(jù)。[0090]具體的,該清理算法包括:
      [0091]Cl、由完成列表中最先存儲(chǔ)的回滾段開始,依照存儲(chǔ)的先后順序,依次判斷出該完成列表中可回收的回滾段;
      [0092]C2、將可回收的回滾段由所述完成列表中刪除,并存儲(chǔ)至所述空閑列表中,獲得所述進(jìn)行了清理算法之后的空閑列表。其中進(jìn)行了清理算法之后的空閑列表中的各個(gè)回滾段中的回滾數(shù)據(jù)可以不被清空,這些回滾段分配給各個(gè)事務(wù)后,各個(gè)事務(wù)可以在存儲(chǔ)新增回滾數(shù)據(jù)時(shí),直接存儲(chǔ)進(jìn)空閑列表中的各個(gè)回滾段中,將已有的回滾數(shù)據(jù)覆蓋;可以理解為任意一個(gè)回滾段被存儲(chǔ)至空閑列表后,數(shù)據(jù)回滾的處理裝置則認(rèn)定該空閑列表中的各個(gè)回滾段中不存在回滾數(shù)據(jù),可直接將其分配給事務(wù),事務(wù)產(chǎn)生的回滾數(shù)據(jù)直接存儲(chǔ)進(jìn)回滾段中。
      [0093]其中,判斷出上述完成列表中可回收的回滾段,具體包括:根據(jù)完成列表中的待判斷回滾段對(duì)應(yīng)的最新使用情況,確定最新使用情況對(duì)應(yīng)的第二事務(wù);
      [0094]若第二事務(wù)的訪問(wèn)時(shí)間不滯后于數(shù)據(jù)庫(kù)系統(tǒng)中的當(dāng)前所執(zhí)行事務(wù)的訪問(wèn)時(shí)間,則確定該待判斷回滾段為可回收的回滾段。
      [0095]舉例來(lái)說(shuō),按照事務(wù)訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng)的先后順序,數(shù)據(jù)庫(kù)系統(tǒng)依次接收到事務(wù)9和事務(wù)10 (事務(wù)按照訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng)的先后順序,則具有對(duì)應(yīng)的標(biāo)號(hào)“9”和“10”),事務(wù)9訪問(wèn)了數(shù)據(jù)文件2,獲得數(shù)據(jù)02后繼續(xù)運(yùn)行,且未對(duì)數(shù)據(jù)文件2進(jìn)行更新,隨后事務(wù)10訪問(wèn)了數(shù)據(jù)文件2,并對(duì)該數(shù)據(jù)文件2進(jìn)行了更新,將數(shù)據(jù)02更新為03,則數(shù)據(jù)回滾的處理裝置將數(shù)據(jù)02作為回滾數(shù)據(jù)存儲(chǔ)至回滾段2中之后,事務(wù)10的運(yùn)行結(jié)束,且隨后無(wú)事務(wù)使用回滾段2,則該回滾段2的最新使用情況對(duì)應(yīng)的第二事務(wù)為事務(wù)10,而此時(shí)事務(wù)9作為當(dāng)前事務(wù)仍然被運(yùn)行,則事務(wù)9有可能會(huì)再次訪問(wèn)數(shù)據(jù)文件2,則為了保證事務(wù)9兩次訪問(wèn)數(shù)據(jù)文件2所獲得的數(shù)據(jù)具有一致性,則事務(wù)9需使用回滾段2以獲取舊版本數(shù)據(jù),即回滾數(shù)據(jù)02;由此可知,在完成列表中判斷作為待判斷回滾段的回滾段2是否為可回收的回滾段時(shí),作為當(dāng)前事務(wù)的事務(wù)9的訪問(wèn)時(shí)間先于作為第二事務(wù)的事務(wù)10,說(shuō)明當(dāng)前事務(wù)9存在使用回滾段2的可能性,因此回滾段2不可作為可回收的回滾段;相反的,若第二事務(wù)的訪問(wèn)時(shí)間不滯后于所述數(shù)據(jù)庫(kù)系統(tǒng)中的當(dāng)前事務(wù)的訪問(wèn)時(shí)間,則確定上述作為待判斷回滾段的回滾段2為可回收的回滾段。
      [0096]另外,需要說(shuō)明的是,在進(jìn)行清理算法時(shí),不需要將完成列表中所有的回滾段清理掉,可以清理部分回滾段,即獲得了足夠的用于分配的回滾段后,便可停止清理算法。
      [0097]本實(shí)施例中,向每一個(gè)有需要的事務(wù)分配回滾段,并記錄分配的回滾段的使用情況,則可合理的對(duì)各個(gè)回滾段進(jìn)行管理,即在針對(duì)一個(gè)事務(wù)進(jìn)行回滾數(shù)據(jù)的存儲(chǔ)時(shí),不影響另一個(gè)事務(wù)對(duì)回滾數(shù)據(jù)的獲取,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性倉(cāng)泛。
      [0098]圖3為本發(fā)明數(shù)據(jù)回滾的處理方法實(shí)施例三的流程圖。如圖3所示,本實(shí)施例是在前述圖1或圖2所示的實(shí)施例的基礎(chǔ)上,進(jìn)一步補(bǔ)充描述,本實(shí)施例包括:
      [0099]S301、當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表中所存儲(chǔ)的各個(gè)回滾段中,確定分配于第一事務(wù)的第一回滾段。
      [0100]S302、針對(duì)第一事務(wù),記錄第一回滾段的使用情況。
      [0101]上述S301和S302具體參照前述圖1或圖2所示的實(shí)施例,在此不再贅述。
      [0102]S303、根據(jù)第一回滾段的使用情況,判斷使用后的第一回滾段是否具有剩余存儲(chǔ)空間。若否,則執(zhí)行S304 ;若是,則執(zhí)行S305。
      [0103]S304、將使用后的第一回滾段存儲(chǔ)至完成列表。
      [0104]若使用后的第一回滾段中不具有剩余存儲(chǔ)空間,則將使用后的第一回滾段存儲(chǔ)至完成列表中時(shí),完成列表中的使用后的第一回滾段具有末位存儲(chǔ)順序;即使用后的第一回滾段相對(duì)于完成列表中的其他回滾段來(lái)說(shuō),按照存儲(chǔ)的時(shí)間順序,該使用后的第一回滾段具有末位存儲(chǔ)順序。具體的,該末位存儲(chǔ)順序可以采用標(biāo)號(hào)、時(shí)間信息或者將使用后的第一回滾段存儲(chǔ)至完成列表的尾部,以體現(xiàn)該使用后的第一回滾段具有末位存儲(chǔ)順序。在存儲(chǔ)時(shí)考慮了回滾段的存儲(chǔ)的先后順序,則數(shù)據(jù)回滾的處理裝置在清理回滾段時(shí),可以合理的選擇合適的回滾段,避免發(fā)生清理了事務(wù)仍然需要的回滾段。
      [0105]S305、將第一回滾段存儲(chǔ)至重用列表。
      [0106]由于使用后的第一回滾段中具有剩余存儲(chǔ)空間,該使用后的第一回滾段仍然可以供其他事務(wù)存儲(chǔ)新增回滾數(shù)據(jù),因此,將第一回滾段存儲(chǔ)至重用列表,且與S304類似,重用列表中的使用后的第一回滾段具有末位存儲(chǔ)順序,則數(shù)據(jù)回滾的處理裝置在分配回滾段時(shí),根據(jù)回滾段的存儲(chǔ)順序判斷出回滾段中已有的回滾數(shù)據(jù)被使用的概率,則可以合理的選擇合適的回滾段,避免發(fā)生回滾段使用沖突的情況,例如第一回滾段中被存儲(chǔ)了回滾數(shù)據(jù),該使用后的第一回滾段中的回滾數(shù)據(jù)在近期被使用的概率較高,若此時(shí)將使用后的第一回滾段分配給事務(wù)I以存儲(chǔ)新增回滾數(shù)據(jù),而事務(wù)2需要使用上述使用后的第一回滾段中已存儲(chǔ)的回滾數(shù)據(jù)的概率較高,則事務(wù)I和事務(wù)2之間會(huì)出現(xiàn)爭(zhēng)搶上述使用后的第一回滾段;因此將使用后的第一回滾段具有末位存儲(chǔ)順序,則數(shù)據(jù)回滾的處理裝置不會(huì)優(yōu)先將該使用后的第一回滾段分配于其他事務(wù),以避免出現(xiàn)事務(wù)對(duì)回滾段之間的爭(zhēng)搶。
      [0107]需要補(bǔ)充說(shuō)明的是,各個(gè)回滾段在物理邏輯上對(duì)應(yīng)一段文件,即該文件中即使沒有寫入數(shù)據(jù),但該文件所占用的存儲(chǔ)空間除了存儲(chǔ)回滾數(shù)據(jù)以外,則不可用于存儲(chǔ)其他數(shù)據(jù);因此,數(shù)據(jù)庫(kù)系統(tǒng)中過(guò)多的回滾段占用了數(shù)據(jù)庫(kù)系統(tǒng)的較多的存儲(chǔ)空間;則數(shù)據(jù)庫(kù)系統(tǒng)中可以另作他用的空閑存儲(chǔ)空間則不足,因此需要徹底刪除部分回滾段;具體的,若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間小于預(yù)設(shè)閾值,則刪除空閑列表中的各個(gè)回滾段,并釋放所述空閑列表中的各個(gè)回滾段對(duì)應(yīng)的文件;例如,一個(gè)回滾段對(duì)應(yīng)的文件占用的存儲(chǔ)空間為地址0001至地址0008,則地址0001至地址0008所對(duì)應(yīng)的存儲(chǔ)空間僅用于存儲(chǔ)回滾數(shù)據(jù);而將文件釋放后,地址0001至地址0008所對(duì)應(yīng)的存儲(chǔ)空間則作為上述空閑存儲(chǔ)空間,可根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)的需要,做出任意分配。
      [0108]進(jìn)一步的,在刪除了空閑列表中的各個(gè)回滾段之后,若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間仍小于預(yù)設(shè)閾值,則釋放重用列表中的可刪除回滾段。其中,在確定重用列表中的可刪除回滾段時(shí),可以參考上述確定可回收的回滾段的各個(gè)步驟。
      [0109]本實(shí)施例中,向每一個(gè)有需要的事務(wù)分配回滾段,并記錄分配的回滾段的使用情況,則可合理的對(duì)各個(gè)回滾段進(jìn)行管理,即在針對(duì)一個(gè)事務(wù)進(jìn)行回滾數(shù)據(jù)的存儲(chǔ)時(shí),不影響另一個(gè)事務(wù)對(duì)回滾數(shù)據(jù)的獲取,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性倉(cāng)泛。
      [0110]圖4為本發(fā)明數(shù)據(jù)回滾的處理裝置實(shí)施例一的結(jié)構(gòu)圖。如圖4所示,該處理裝置包括:
      [0111]確定模塊51,用于當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段;所述回滾段用于存儲(chǔ)事務(wù)訪問(wèn)數(shù)據(jù)文件產(chǎn)生的回滾數(shù)據(jù);
      [0112]記錄模塊52,用于針對(duì)所述第一事務(wù),記錄第一回滾段的使用情況;
      [0113]存儲(chǔ)模塊53,用于根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中;
      [0114]其中,所述各個(gè)列表包括重用列表、空閑列表和完成列表,所述重用列表中的每個(gè)回滾段中存儲(chǔ)了回滾數(shù)據(jù),且具有剩余存儲(chǔ)空間,所述空閑列表中的每個(gè)回滾段中無(wú)回滾數(shù)據(jù),所述完成列表中的每個(gè)回滾段中不具有剩余存儲(chǔ)空間。
      [0115]本實(shí)施例中,數(shù)據(jù)回滾的處理裝置向每一個(gè)有需要的事務(wù)分配回滾段,并記錄分配的回滾段的使用情況,則可合理的對(duì)各個(gè)回滾段進(jìn)行管理,即在針對(duì)一個(gè)事務(wù)進(jìn)行回滾數(shù)據(jù)的存儲(chǔ)時(shí),不影響另一個(gè)事務(wù)對(duì)回滾數(shù)據(jù)的獲取,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性能。
      [0116]圖5為本發(fā)明數(shù)據(jù)回滾的處理裝置實(shí)施例二的結(jié)構(gòu)圖。如圖5所示,本實(shí)施例是在圖4所示的實(shí)施例的基礎(chǔ)上,做出進(jìn)一步的描述,該處理裝置中的確定模塊51具體包括:
      [0117]第一處理單元511,用于若所述重用列表中包括至少一個(gè)回滾段,則確定重用列表中最先存儲(chǔ)的回滾段為所述第一回滾段,并在所述重用列表中刪除該最先存儲(chǔ)的回滾段;
      [0118]第二處理單元512,若所述重用列表中不包括所述回滾段,則在所述空閑列表中確定所述第一回滾段。
      [0119]進(jìn)一步的,上述第二處理單元512具體用于若所述空閑列表包括至少一個(gè)回滾段,則將所述空閑列表中的一個(gè)回滾段作為所述第一回滾段,并將所述空閑列表中的該回滾段刪除;
      [0120]具體的,上述確定模塊51在執(zhí)行上述在數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于第一事務(wù)的第一回滾段時(shí),上述第一處理單元511會(huì)先判斷重用列表中是否存在回滾段,若存在,則上述第一處理單元511確定重用列表中最先存儲(chǔ)的回滾段為所述第一回滾段;若不存在,則上述第一處理單元511觸發(fā)第二處理單元512,則第二處理單元512會(huì)判斷空閑列表中是否存在回滾段,若存在,第二處理單元512在空閑列表中確定第一回滾段;若所述空閑列表不包括回滾段,則所述第二處理單元觸發(fā)判斷模塊54 ;
      [0121]該判斷模塊54用于判斷所述數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量是否已達(dá)到上限;
      [0122]若否,創(chuàng)建新增回滾段作為所述第一回滾段;
      [0123]若是,則進(jìn)行清理算法,并在進(jìn)行了所述清理算法之后的空閑列表中,確定任意一個(gè)回滾段作為所述第一回滾段。
      [0124]具體的,上述判斷模塊54所執(zhí)行的清理算法包括:
      [0125]由所述完成列表中最先存儲(chǔ)的回滾段開始,依照存儲(chǔ)的先后順序,依次判斷出所述完成列表中可回收的回滾段;
      [0126]將所述可回收的回滾段由所述完成列表中刪除,并存儲(chǔ)至所述空閑列表中,獲得所述進(jìn)行了所述清理算法之后的空閑列表。
      [0127]進(jìn)一步的,上述判斷模塊54具體用于
      [0128]根據(jù)所述完成列表中的待判斷回滾段對(duì)應(yīng)的最新使用情況,確定所述最新使用情況對(duì)應(yīng)的第二事務(wù);
      [0129]若所述第二事務(wù)的訪問(wèn)時(shí)間不滯后于所述數(shù)據(jù)庫(kù)系統(tǒng)中的當(dāng)前事務(wù)的訪問(wèn)時(shí)間,則確定所述待判斷回滾段為所述可回收的回滾段。
      [0130]在事務(wù)使用了回滾段之后,上述存儲(chǔ)模塊53具體用于
      [0131]若所述使用后的第一回滾段中不具有剩余存儲(chǔ)空間,則將所述使用后的第一回滾段存儲(chǔ)至所述完成列表,所述完成列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序;
      [0132]若所述使用后的第一回滾段中具有剩余存儲(chǔ)空間,則將所述第一回滾段存儲(chǔ)至所述重用列表,所述重用列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序。
      [0133]另外,為了優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)對(duì)數(shù)據(jù)回滾的處理過(guò)程,上述處理裝置還包括釋放模塊55,用于若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間小于預(yù)設(shè)閾值,則刪除所述空閑列表中的各個(gè)回滾段,并釋放所述空閑列表中的各個(gè)回滾段對(duì)應(yīng)的文件。
      [0134]在刪除了所述空閑列表中的各個(gè)回滾段之后,若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間仍小于預(yù)設(shè)閾值,則釋放所述重用列表中的可刪除回滾段。
      [0135]本實(shí)施例中,數(shù)據(jù)回滾的處理裝置向每一個(gè)有需要的事務(wù)分配回滾段,并記錄分配的回滾段的使用情況,則可合理的對(duì)各個(gè)回滾段進(jìn)行管理,即在針對(duì)一個(gè)事務(wù)進(jìn)行回滾數(shù)據(jù)的存儲(chǔ)時(shí),不影響另一個(gè)事務(wù)對(duì)回滾數(shù)據(jù)的獲取,保證了多個(gè)事務(wù)的并發(fā)特性,提高了數(shù)據(jù)庫(kù)系統(tǒng)的工作性能。
      [0136]需要補(bǔ)充的是,上述各個(gè)裝置實(shí)施例中的各個(gè)模塊用于執(zhí)行前述各個(gè)方法實(shí)施例中的各個(gè)步驟,具體實(shí)現(xiàn)過(guò)程及技術(shù)效果請(qǐng)參照前述各個(gè)方法實(shí)施例,在此不再贅述。
      [0137]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
      [0138]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
      【權(quán)利要求】
      1.一種數(shù)據(jù)回滾的處理方法,其特征在于,包括: 當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段;所述回滾段用于存儲(chǔ)事務(wù)訪問(wèn)數(shù)據(jù)文件產(chǎn)生的回滾數(shù)據(jù); 針對(duì)所述第一事務(wù),記錄第一回滾段的使用情況; 根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中; 其中,所述各個(gè)列表包括重用列表、空閑列表和完成列表,所述重用列表中的每個(gè)回滾段中存儲(chǔ)了回滾數(shù)據(jù),且具有剩余存儲(chǔ)空間,所述空閑列表中的每個(gè)回滾段中無(wú)回滾數(shù)據(jù),所述完成列表中的每個(gè)回滾段中不具有剩余存儲(chǔ)空間。
      2.根據(jù)權(quán)利要求1所述的處理方法,其特征在于,所述在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表中所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段,包括: 若所述重用列表中包括至少一個(gè)回滾段,則確定重用列表中最先存儲(chǔ)的回滾段為所述第一回滾段,并在所述重用列表中刪除該最先存儲(chǔ)的回滾段; 若所述重用列表中不包括所述回滾段,則在所述空閑列表中確定所述第一回滾段。
      3.根據(jù)權(quán)利要求2所述的處理方法,其特征在于,所述在所述空閑列表中確定所述第一回滾段,包括: 若所述空閑列表包括至少一個(gè)回滾段,則將所述空閑列表中的一個(gè)回滾段作為所述第一回滾段,并將所述空閑列表中的該回滾段刪除; 若所述空閑列表不包括回滾段,則判斷所述數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量是否已達(dá)到上限; 若否,創(chuàng)建新增回滾段作為所述第一回滾段; 若是,則進(jìn)行清理算法,并在進(jìn)行了所述清理算法之后的空閑列表中,確定任意一個(gè)回滾段作為所述第一回滾段。
      4.根據(jù)權(quán)利要求3所述的處理方法,其特征在于,所述清理算法包括: 由所述完成列表中最先存儲(chǔ)的回滾段開始,依照存儲(chǔ)的先后順序,依次判斷出所述完成列表中可回收的回滾段; 將所述可回收的回滾段由所述完成列表中刪除,并存儲(chǔ)至所述空閑列表中,獲得所述進(jìn)行了所述清理算法之后的空閑列表。
      5.根據(jù)權(quán)利要求4所述的處理方法,其特征在于,所述判斷出所述完成列表中可回收的回滾段,包括: 根據(jù)所述完成列表中的待判斷回滾段對(duì)應(yīng)的最新使用情況,確定所述最新使用情況對(duì)應(yīng)的第二事務(wù); 若所述第二事務(wù)的訪問(wèn)時(shí)間不滯后于所述數(shù)據(jù)庫(kù)系統(tǒng)中的當(dāng)前事務(wù)的訪問(wèn)時(shí)間,則確定所述待判斷回滾段為所述可回收的回滾段。
      6.根據(jù)權(quán)利要求1或5所述的處理方法,其特征在于,所述根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的管理庫(kù)中,包括: 若所述使用后的第一回滾段中不具有剩余存儲(chǔ)空間,則將所述使用后的第一回滾段存儲(chǔ)至所述完成列表,所述完成列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序; 若所述使用后的第一回滾段中具有剩余存儲(chǔ)空間,則將所述第一回滾段存儲(chǔ)至所述重用列表,所述重用列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序。
      7.根據(jù)權(quán)利要求6所述的處理方法,其特征在于,所述處理方法還包括: 若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間小于預(yù)設(shè)閾值,則刪除所述空閑列表中的各個(gè)回滾段,并釋放所述空閑列表中的各個(gè)回滾段對(duì)應(yīng)的文件。 在刪除了所述空閑列表中的各個(gè)回滾段之后,若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間仍小于預(yù)設(shè)閾值,則釋放所述重用列表中的可刪除回滾段。
      8.一種數(shù)據(jù)回滾的處理裝置,其特征在于,包括: 確定模塊,用于當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)接收到第一事務(wù)時(shí),在所述數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)列表所存儲(chǔ)的各個(gè)回滾段中,確定分配于所述第一事務(wù)的第一回滾段;所述回滾段用于存儲(chǔ)事務(wù)訪問(wèn)數(shù)據(jù)文件產(chǎn)生的回滾數(shù)據(jù); 記錄模塊,用于針對(duì)所述第一事務(wù),記錄第一回滾段的使用情況; 存儲(chǔ)模塊,用于根據(jù)所述第一回滾段的使用情況,將使用后的第一回滾段存儲(chǔ)至對(duì)應(yīng)的列表中; 其中,所述各個(gè)列表包括重用列表、空閑列表和完成列表,所述重用列表中的每個(gè)回滾段中存儲(chǔ)了回滾數(shù)據(jù),且具有剩余存儲(chǔ)空間,所述空閑列表中的每個(gè)回滾段中無(wú)回滾數(shù)據(jù),所述完成列表中的每個(gè)回滾段中不具有剩余存儲(chǔ)空間。
      9.根據(jù)權(quán)利要求8所述的處理裝置,其特征在于,所述確定模塊包括: 第一處理單元,用于若所述重 用列表中包括至少一個(gè)回滾段,則確定重用列表中最先存儲(chǔ)的回滾段為所述第一回滾段,并在所述重用列表中刪除該最先存儲(chǔ)的回滾段; 第二處理單元,若所述重用列表中不包括所述回滾段,則在所述空閑列表中確定所述第一回滾段。
      10.根據(jù)權(quán)利要求9所述的處理裝置,其特征在于,所述第二處理單元具體用于 若所述空閑列表包括至少一個(gè)回滾段,則將所述空閑列表中的一個(gè)回滾段作為所述第一回滾段,并將所述空閑列表中的該回滾段刪除; 若所述空閑列表不包括回滾段,則所述第二處理單元觸發(fā)判斷模塊; 所述判斷模塊用于判斷所述數(shù)據(jù)庫(kù)系統(tǒng)中的全部回滾段的數(shù)量是否已達(dá)到上限; 若否,創(chuàng)建新增回滾段作為所述第一回滾段; 若是,則進(jìn)行清理算法,并在進(jìn)行了所述清理算法之后的空閑列表中,確定任意一個(gè)回滾段作為所述第一回滾段。
      11.根據(jù)權(quán)利要求10所述的處理裝置,其特征在于,所述清理算法包括: 由所述完成列表中最先存儲(chǔ)的回滾段開始,依照存儲(chǔ)的先后順序,依次判斷出所述完成列表中可回收的回滾段; 將所述可回收的回滾段由所述完成列表中刪除,并存儲(chǔ)至所述空閑列表中,獲得所述進(jìn)行了所述清理算法之后的空閑列表。
      12.根據(jù)權(quán)利要求11所述的處理裝置,其特征在于,所述判斷模塊具體用于 根據(jù)所述完成列表中的待判斷回滾段對(duì)應(yīng)的最新使用情況,確定所述最新使用情況對(duì)應(yīng)的第二事務(wù); 若所述第二事務(wù)的訪問(wèn)時(shí)間不滯后于所述數(shù)據(jù)庫(kù)系統(tǒng)中的當(dāng)前事務(wù)的訪問(wèn)時(shí)間,則確定所述待判斷回滾段為所述可回收的回滾段。
      13.根據(jù)權(quán)利要求8或12所述的處理裝置,其特征在于,所述存儲(chǔ)模塊具體用于 若所述使用后的第一回滾段中不具有剩余存儲(chǔ)空間,則將所述使用后的第一回滾段存儲(chǔ)至所述完成列表,所述完成列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序; 若所述使用后的第一回滾段中具有剩余存儲(chǔ)空間,則將所述第一回滾段存儲(chǔ)至所述重用列表,所述重用列表中的所述使用后的第一回滾段具有末位存儲(chǔ)順序。
      14.根據(jù)權(quán)利要求13所述的處理裝置,其特征在于,所述處理裝置還包括釋放模塊,用于 若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間小于預(yù)設(shè)閾值,則刪除所述空閑列表中的各個(gè)回滾段,并釋放所述空閑列表中的各個(gè)回滾段對(duì)應(yīng)的文件。 在刪除了所述空閑列表中的各個(gè)回滾段之后,若數(shù)據(jù)庫(kù)系統(tǒng)的空閑存儲(chǔ)空間仍小于預(yù)設(shè)閾值,則釋放所述重用列表中的`可刪除回滾段。
      【文檔編號(hào)】G06F17/30GK103699681SQ201310754233
      【公開日】2014年4月2日 申請(qǐng)日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
      【發(fā)明者】徐文韜, 聶愿愿, 謝銳 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1