IBM DB2數(shù)據(jù)庫無限活動(dòng)的日志策略的破解
文章主要描述的是IBM DB2數(shù)據(jù)庫無限活動(dòng)的日志策略詳細(xì)講解,我們大家都知道當(dāng)數(shù)據(jù)庫***次被創(chuàng)建之時(shí),其一共有3個(gè)日志文件,被稱做主要日志文件,作為創(chuàng)建過程的一部分被分配了。在Linux和Unix平臺上。
這些日志文件共有1,000個(gè)大小為4KB的頁面;在Windows平臺上,這些日志文件共有250個(gè)大小為4KB的頁面。
當(dāng)IBM DB2數(shù)據(jù)庫***次被創(chuàng)建的時(shí)候,有3個(gè)日志文件,被稱做主要日志文件,作為創(chuàng)建過程的一部分被分配了。在Linux和Unix平臺上,這些日志文件共有1,000個(gè)大小為4KB的頁面;在Windows平臺上,這些日志文件共有250個(gè)大小為4KB的頁面。
然而,被使用的主要日志文件的數(shù)量,連同每一個(gè)能夠容納的數(shù)據(jù)量,都被數(shù)據(jù)庫配置文件中的logprimary 和logfilsiz 參數(shù)所控制。所有被創(chuàng)建的主要日志文件的使用方式都由為數(shù)據(jù)庫選擇的日志策略所決定。有兩個(gè)可使用的不同的策略,一個(gè)是循環(huán)日志,一個(gè)是檔案歸建日志。但是一種被稱為無限活動(dòng)日志的混合方式也許工作得***。
循環(huán)日志要求存儲在日志緩沖區(qū)的記錄以循環(huán)的順序被寫入主要日志文件。一旦主要日志文件被寫滿,并且仍被標(biāo)記為“不可用”,DB2數(shù)據(jù)庫管理器就會分配次要日志文件,并且將記錄寫入其中。被允許的次要日志文件的總數(shù)由IBM DB2數(shù)據(jù)庫配置文件的logsecond參數(shù)控制。
在檔案歸建日志中,與循環(huán)日志類似,存放在日志緩沖區(qū)的日志記錄被寫入預(yù)先分配的主要日志文件中。然而,與循環(huán)日志不同的是,這些日志文件永遠(yuǎn)不會被重用。每次當(dāng)主要日志文件被寫滿的時(shí)候,另一個(gè)主要日志文件就會被分配,這樣所要使用的主要日志文件的數(shù)量(由IBM DB2數(shù)據(jù)庫配置參數(shù)logprimary指定)就總是可得的。只要磁盤還有空間,這個(gè)過程就會持續(xù)下去。
無限活動(dòng)日志。你也許考慮通過簡單地配置數(shù)據(jù)庫,讓其使用大量所需的主要和/或次要日志文件來避免日志空間被全部用光。然而,被允許的日志文件(主要的和次要的組合在一起)的***數(shù)量是256個(gè),并且如果你的日志文件的尺寸相對較小,那么當(dāng)事務(wù)的工作量變大或者是事務(wù)運(yùn)行了過長的時(shí)間,你仍然有可能很快地用光全部日志空間。而且,由于每次被迫分配日志文件的時(shí)候都會影響性能,你就會想要盡可能地避免分配大量的次要日志文件。
理想情況是,你希望分配足夠的主要日志文件來應(yīng)付大多數(shù)情況,并且使用剛好可以應(yīng)付事務(wù)的工作量***峰時(shí)的數(shù)量的次要日志文件。如果你非常關(guān)注日志空間的消耗殆盡,并且你想要避免分配大量的次要日志文件,那么你可以配置數(shù)據(jù)庫,使其執(zhí)行一種被稱為無限活動(dòng)日志或者無限日志的策略。
無限活動(dòng)日志允許一個(gè)跨越所有主要日志和一個(gè)或多個(gè)檔案歸建日志的活動(dòng)事務(wù),并且有效地允許事務(wù)使用無限數(shù)量的日志文件。為了能夠使用無限活動(dòng)日志,你只需簡單地設(shè)置IBM DB2數(shù)據(jù)庫配置參數(shù)userexit 和logsecond 分別為yes 和 –1。
注意到下面這一點(diǎn)是很重要的,即當(dāng)IBM DB2數(shù)據(jù)庫配置參數(shù)userexit設(shè)置為yes時(shí),每當(dāng)日志文件被關(guān)閉的時(shí)候,一個(gè)用戶提供的userexit 程序就會被調(diào)用,并且這個(gè)程序會將不需要的日志文件移動(dòng)至另一個(gè)可以***存儲的位置(因此,服務(wù)器上日志存儲空間被消耗殆盡的危險(xiǎn)就會被消除)。
當(dāng)服務(wù)器配置參數(shù)logsecond被設(shè)置為-1時(shí),配置參數(shù)logprimary和logfilsiz仍然用于指定DB2在活動(dòng)日志路徑上保留多少個(gè)主要日志文件,以及每個(gè)文件應(yīng)該有多大。如果DB2需要從一個(gè)日志文件中讀取日志,但是這個(gè)文件不在活動(dòng)日志路徑上,DB2就會調(diào)用userexit 程序從存檔文件中檢索日志文件,并且將其拷貝至活動(dòng)日志區(qū)域,這樣其他針對相同文件的讀取就會加快速度。DB2管理著這些所需日志文件的檢索、拷貝和移除。
注意:雖然無限活動(dòng)日志可被用于支持那些大的作業(yè)環(huán)境,它們需要的日志空間超出了正常情況下分配的主要日志空間,但是它仍然有它的權(quán)衡點(diǎn)。特別是,回滾操作(無論是在savepoint級,還是在事務(wù)級)的執(zhí)行,會由于需要在檔案存儲地點(diǎn)檢索日志文件而變得非常緩慢。同樣地,崩潰恢復(fù)也會由于同樣的原因而變得很慢。
以上的相關(guān)內(nèi)容就是對IBM DB2數(shù)據(jù)庫無限活動(dòng)日志策略的介紹,望你能有所收獲。
【編輯推薦】
- DB2數(shù)據(jù)庫為單個(gè)會話鎖定“竅門”
- 快速掌握DB2數(shù)據(jù)移動(dòng)的操作技巧
- DB2建立database Partition的點(diǎn)滴
- DB2數(shù)據(jù)庫備份成功與否的正確驗(yàn)證方式描述
- DB2數(shù)據(jù)庫所支持的外部文件格式與制格式的文件