用于審計(jì)跟蹤的無回滾閾值的制作方法【專利說明】【
背景技術(shù):
】[0001]隨著用戶不斷增加產(chǎn)生的和需要的數(shù)據(jù)量,位于計(jì)算系統(tǒng)上的數(shù)據(jù)庫的重要性、規(guī)模和復(fù)雜性已經(jīng)增長。例如,數(shù)據(jù)庫可以跨越多個(gè)服務(wù)器,可以包含數(shù)百萬個(gè)記錄和若干千兆字節(jié)數(shù)據(jù)。結(jié)果,數(shù)據(jù)庫管理也已經(jīng)變得越來越重要和復(fù)雜?!靖綀D說明】[0002]下面的詳細(xì)描述參考附圖,其中:[0003]圖1圖示根據(jù)本公開的示例的利用無回滾閾值的審計(jì)跟蹤的框圖;[0004]圖2A-圖2B圖示根據(jù)本公開的示例的用于為審計(jì)跟蹤所用的無回滾閾值的計(jì)算系統(tǒng)的框圖。[0005]圖3圖示根據(jù)本公開的示例的用于處理為審計(jì)跟蹤所用的無回滾事務(wù)的方法的流程圖。[0006]圖4A-圖4D圖示根據(jù)本公開的示例的用于基于為審計(jì)跟蹤所用的無回滾閾值來確定是否提交或終止事務(wù)的方法?!揪唧w實(shí)施方式】[0007]當(dāng)數(shù)據(jù)庫管理員涉及修改數(shù)據(jù)庫時(shí),他們會(huì)希望監(jiān)視并記錄數(shù)據(jù)庫事務(wù)。例如,監(jiān)視和記錄(也稱為審計(jì))可以基于單獨(dú)的動(dòng)作,如所執(zhí)行的SQL語句的類型,和/或基于多個(gè)因素的組合,如執(zhí)行動(dòng)作的用戶、應(yīng)用程序、時(shí)間等。審計(jì)(auditing)可以監(jiān)視并收集關(guān)于數(shù)據(jù)庫活動(dòng)的數(shù)據(jù),如關(guān)于哪些表格正被更新的統(tǒng)計(jì)結(jié)果、關(guān)于哪些用戶正在修改數(shù)據(jù)庫內(nèi)容的統(tǒng)計(jì)結(jié)果等等。[0008]在傳統(tǒng)數(shù)據(jù)庫中,這些事務(wù)被記錄到審計(jì)跟蹤(audittrail)內(nèi),以使可以重放或撤銷這些事務(wù),如在發(fā)生錯(cuò)誤時(shí)或者為了恢復(fù)目的而重放或撤銷這些事務(wù)。這些審計(jì)跟蹤(或者審計(jì)日志)有時(shí)被實(shí)現(xiàn)為環(huán)形緩沖器;一旦所有之前的緩沖器都被填滿并且之前的事務(wù)活動(dòng)存儲(chǔ)不再需要下一緩沖器,就重新使用該環(huán)形緩沖器。在這些緩沖器內(nèi),事務(wù)具有開始和末尾,并且在該范圍內(nèi)描述事務(wù)的審計(jì)跟蹤記錄。有時(shí)將該范圍描述為存在于分別以事務(wù)的第一個(gè)審計(jì)跟蹤記錄位置和同一事務(wù)的最后一個(gè)審計(jì)跟蹤記錄的位置為特征的低水位標(biāo)志(LffM)和高水位標(biāo)志(HffM)之間。HffM還可以是事務(wù)的最終狀態(tài)記錄(提交或終止)。[0009]在審計(jì)跟蹤記錄的該范圍或跨度內(nèi),可能僅存在指定事務(wù)的記錄,或更可能地,可能存在其它不同事務(wù)的混合審計(jì)記錄。只要LWM屬于的那些事務(wù)仍然未解決,事務(wù)的LWM通常用于識(shí)別或標(biāo)記不能被重新用于新事務(wù)的審計(jì)緩沖器。也就是說,直到特定LffM提交或終止并且成為數(shù)據(jù)庫的永久部分,該特定LffM才能夠被再用于新事務(wù)。[0010]數(shù)據(jù)庫的規(guī)模正在逐步增大,并且在那些正在增長的數(shù)據(jù)庫上運(yùn)行的工作負(fù)荷的復(fù)雜性正在增加。因此,事務(wù)的審計(jì)跟蹤跨度(在LffM和HffM之間的范圍)也漸漸變得更大。在所謂的“大數(shù)據(jù)”實(shí)現(xiàn)方式中,單個(gè)查詢或變換會(huì)容易地超過所分配的審計(jì)跟蹤空間的全部容量或者維護(hù)充足審計(jì)跟蹤空間的成本過高,是十分可能的。在也不增加審計(jì)跟蹤的容量的情況下,在事務(wù)完成之前耗盡審計(jì)跟蹤空間的風(fēng)險(xiǎn)上升。之前,已經(jīng)實(shí)施多種策略來嘗試適應(yīng)不斷增大的審計(jì)跟蹤的空間要求。例如,已經(jīng)構(gòu)思出增加更多審計(jì)容量或從平臺(tái)上去除舊的審計(jì)跟蹤以釋放本地磁盤空間。然而,這些解決方案通過增加磁盤空間或?qū)⑷罩疽苿?dòng)至另一指定存儲(chǔ)位置,提高了成本,同時(shí)還提高了附加服務(wù)器空間的成本。[0011]此外,可以針對(duì)最常見情況優(yōu)化數(shù)據(jù)庫系統(tǒng),最常見情況是事務(wù)提交。當(dāng)事務(wù)進(jìn)入回滾狀態(tài)時(shí),在生成并處理補(bǔ)償記錄以將數(shù)據(jù)庫回滾至一致的或已知的狀態(tài)方面,經(jīng)常低效得多。如果事務(wù)產(chǎn)生多個(gè)審計(jì)記錄并且在事務(wù)終止之前活躍幾分鐘(例如,十五分鐘),那么事務(wù)回滾花費(fèi)幾個(gè)小時(shí)可能不是異常的,在該時(shí)間期間底層SQL表格可以被鎖定,這將防止發(fā)生附加操作。[0012]下面將通過參考用于審計(jì)跟蹤的無回滾閾值的幾個(gè)示例來描述各個(gè)實(shí)施例。無回滾閾值允許數(shù)據(jù)庫管理員(DBA)規(guī)定在改變事務(wù)的個(gè)性之前允許該事務(wù)跨越的審計(jì)范圍,使得將不再嘗試回滾。事務(wù)將不被終止,并且該事務(wù)繼續(xù),好像什么也沒改變一樣。然而,如果該事務(wù)因某種原因而應(yīng)該終止,那么作為操作或硬件錯(cuò)誤的結(jié)果或者應(yīng)用戶的請(qǐng)求,該事務(wù)將不回滾并相反將被終止。[0013]在一些實(shí)現(xiàn)方式中,無回滾閾值可以防止回滾期間的延長停歇或禁閉時(shí)間段。如果數(shù)據(jù)庫是空的并且正被填充,那么通過返回空數(shù)據(jù)庫來重啟加載而不是嘗試針對(duì)事務(wù)回滾發(fā)生而等待延長的一段時(shí)間,可能是令人期望的。此外,沒必要將從平臺(tái)離開的較舊審計(jì)跟蹤歸檔,因?yàn)閷⒂肋h(yuǎn)不需要它們。這消除了離開平臺(tái)存儲(chǔ)的成本以及恢復(fù)和讀取日志所需的時(shí)間。由于大型事務(wù)在審計(jì)跟蹤中跨越太多空間,所以可能也不需要阻擋新事務(wù),因?yàn)檫@種事務(wù)被自動(dòng)地轉(zhuǎn)換成無回滾。這允許系統(tǒng)中的其它工作正常地進(jìn)行。因?yàn)榉艞壛诉@種事務(wù),所以消除了從巨大表格加載故障的延長恢復(fù)時(shí)間和總表鎖(grosstablelock)。能夠在短時(shí)間內(nèi)丟棄并重新創(chuàng)建這些表,并且正常操作能夠繼續(xù)。這些和其它優(yōu)點(diǎn)將從隨后的描述中顯而易見。[0014]圖1圖示根據(jù)本公開的示例的具有無回滾閾值的審計(jì)跟蹤100的框圖。[0015]無回滾閾值的一個(gè)實(shí)現(xiàn)方式暴露被稱為無回滾閾值的可配置的審計(jì)跟蹤容量參數(shù),該無回滾閾值在被事務(wù)超過時(shí)引起將該事務(wù)轉(zhuǎn)換至無回滾狀態(tài)。如果發(fā)生錯(cuò)誤,那么超過該閾值的事務(wù)被放棄而不是被終止(回滾)。例如,圖1圖示由10個(gè)文件102a-102j構(gòu)成的審計(jì)跟蹤100。每個(gè)文件可以具有限定的容量(在一個(gè)示例中,每個(gè)文件100MB容量)。總計(jì),審計(jì)跟蹤100包括用于該總共10個(gè)文件102a-102j的空間(在這個(gè)示例中,用于審計(jì)跟蹤100的1,000ΜΒ總?cè)萘?。[0016]用戶或DBA可以建立無回滾閾值,該無回滾閾值在跨越超過該閾值的任何事務(wù)超過該無回滾閾值時(shí)將被轉(zhuǎn)換至無回滾狀態(tài)。被轉(zhuǎn)換至無回滾狀態(tài)(也被稱為無回滾事務(wù))的事務(wù)在該事務(wù)的處理期間在發(fā)生錯(cuò)誤的情況下不會(huì)回滾。在這個(gè)示例中,將無回滾閾值設(shè)置成40%的容量閾值,并且該審計(jì)跟蹤具有I,000ΜΒ的可用存儲(chǔ)空間。允許將比審計(jì)跟蹤100中的可用空間小的事務(wù)(如TX104)存儲(chǔ)在該審計(jì)跟蹤中。更特別地,在該示例中,TX104跨越300MB,因?yàn)樗紦?jù)三個(gè)100MB的文件102b-102d。當(dāng)TX104開始時(shí),在文件102b處,在審計(jì)跟蹤中僅使用100MB的空間(S卩,僅使用100MB的文件102a)。這意味著,審計(jì)跟蹤100中的可用容量是900MB或90%,其大于被設(shè)置在40%的無回滾閾值110。因?yàn)樵趯徲?jì)跟蹤100中的可用容量大于無回滾閾值110,所以該審計(jì)跟蹤能夠存儲(chǔ)TX104。[0017]然而,TX106(跨越600MB的事務(wù))不能被存儲(chǔ)在審計(jì)跟蹤100中,因?yàn)門X106的跨度超過無回滾閾值110。換句話說,審計(jì)跟蹤100中的可用容量小于無回滾閾值110。更具體地,TX106開始文件102e,意味著在審計(jì)跟蹤100中已經(jīng)使用400MB的容量。因?yàn)門X106超過無回滾閾值110,所以TX106可以存儲(chǔ)在審計(jì)跟蹤100中;然而,不是與TX106相關(guān)的所有文件都被保持到事務(wù)完成,因?yàn)閷⒉恍枰缙谟涗浻糜谑聞?wù)回滾。[0018]應(yīng)該理解,通過觀察每個(gè)事務(wù)的低水位標(biāo)志能夠進(jìn)行相同的確定。例如,LffM104a表示TX104的低水位標(biāo)志,而LWM106a表示TX106的低水位標(biāo)志。類似地,HffM104b表示TX104的高水位標(biāo)志,而HWM106b表示TX106的高水位標(biāo)志。審計(jì)跟蹤100被限定為審計(jì)跟蹤108的開始和當(dāng)前EOF112之間的空間,當(dāng)前EOF112是文件位置的當(dāng)前末尾。[0019I在圖1所示的示例中,文件112的當(dāng)前末尾(EOF)還表示活躍事務(wù)(如TX106)的HffM。在這種情況中,HWM106b對(duì)應(yīng)于當(dāng)前EOF112,并且在將事務(wù)轉(zhuǎn)換成無回滾之前,根據(jù)EOF112對(duì)無回滾閾值位置進(jìn)行的計(jì)算提供所允許的最低LWM。在這種情況中,40%的無回滾閾值在文件102g處顯示。如果活躍事務(wù)(如TX106)具有在文件102a-102f中的LWM,那么事務(wù)將被轉(zhuǎn)換成無回滾事務(wù)。在本示例中,TX106具有在該范圍中的LWM(LMW106a在文件102e中),當(dāng)前第1頁1 2 3