新聞中心
以下的文章主要向大家描述的是專家答疑之DB2 Capture程序的詳細(xì)解析,在DB2 Capture程序可以說是一個十分關(guān)鍵的應(yīng)用程序,尤其是在數(shù)據(jù)庫復(fù)制解決方案中。這個程序的主要的作用就是追蹤在DB2服務(wù)器上對復(fù)制源所做的更改。

如果有更改的話,會將這些更改的記錄保存在一張?zhí)厥獾谋碇?CD表)。通常情況下,這個應(yīng)用程序時運行在控制服務(wù)器上。不過具體運行在哪個位置,根據(jù)操作系統(tǒng)的不同可以有不同的選擇。
作為數(shù)據(jù)庫管理員,必須要將Capture程序牢牢的掌握在手中。讓其在關(guān)鍵的時候發(fā)揮關(guān)鍵的作用。具體的來說,需要在必要的時候,啟動如下幾個Capture程序相關(guān)的進(jìn)程。
一、工程程序進(jìn)程
如上圖所示,既然Capture程序主要用來監(jiān)測數(shù)據(jù)源表的變動并將相關(guān)的記錄保存到CD表中,那么必然要有一個進(jìn)程,好像一只眼睛一樣,時刻盯著數(shù)據(jù)源表數(shù)據(jù)的的變化情況。如果有變化的話,即使告知其他進(jìn)程。這個進(jìn)程就叫做工作程序進(jìn)程。通常情況下,當(dāng)啟動DB2 Capture進(jìn)程的時候,這個工作程序進(jìn)程就會啟動。
工作程序進(jìn)程與復(fù)制源所駐留的DB2數(shù)據(jù)庫相連,監(jiān)視復(fù)制源的更改情況。同時,其也決定了DB2 Capture程序的啟動方式(即根據(jù)相關(guān)的參數(shù)來決定是以熱啟動方式或者以冷啟動方式來啟動Capture程序)。
當(dāng)這個工作程序進(jìn)程啟動的時候,它就會讀取活動的數(shù)據(jù)庫日志,以判斷相關(guān)的復(fù)制源(如基礎(chǔ)表、視圖)等等是否進(jìn)行了更改。只要啟動了這個進(jìn)程,那么這個監(jiān)測會一直持續(xù)下去。也就是說,并不是用戶對復(fù)制源作了更改,才觸發(fā)這個進(jìn)程。而是無論復(fù)制源是否有更改,這個進(jìn)程一直都存在(只要啟動了Capture程序)。對于這個進(jìn)程,筆者認(rèn)為數(shù)據(jù)庫管理員需要從以下幾個方面去了解。
一是其監(jiān)測的內(nèi)容來源。工作程序進(jìn)程會讀取活動的數(shù)據(jù)庫日志。不過對于DB2數(shù)據(jù)庫來說,數(shù)據(jù)庫日志包括兩部分,分別為重做日志緩存與重做日志文件。由于內(nèi)存的速度要比硬盤速度快的多,所以為了提高數(shù)據(jù)庫的性能,系統(tǒng)往往是先將數(shù)據(jù)存儲在內(nèi)存中。然后在符合一定的條件下,再將內(nèi)存中的數(shù)據(jù)保存到數(shù)據(jù)文件中。
而內(nèi)存中的事務(wù)日志又可以分為兩類,分別為已落實的事務(wù)記錄(即已經(jīng)遞交的事務(wù))與未落實的事務(wù)記錄(還沒有遞交的事務(wù))。工作程序進(jìn)程在工作過程中,會收集內(nèi)存中屬于每個事務(wù)的所有記錄,并每個一個固定的時間將收集到的已經(jīng)落實的事務(wù)寫入到對應(yīng)的CD表中。故其數(shù)據(jù)源其實是內(nèi)存中已經(jīng)落實了的事務(wù)記錄。
二是需要注意,一個時間間隔的問題。即隔多少時間,將相關(guān)的記錄保存到CD表中。如果這個時間間隔設(shè)置的比較長,那么數(shù)據(jù)的同步性就比較差。而如果設(shè)置的比較短的話,又會影響數(shù)據(jù)庫的性能。一般情況下,只要采取數(shù)據(jù)庫的默認(rèn)設(shè)置即可。但是如果數(shù)據(jù)源表中的數(shù)據(jù)更改非常頻繁,則需要根據(jù)實際情況來合理調(diào)整這個時間參數(shù),以提高數(shù)據(jù)庫性能。
筆者的建議是,先采用默認(rèn)的值,并進(jìn)行數(shù)據(jù)庫性能的監(jiān)測。如果發(fā)現(xiàn)這個值不合適的話,則可以適當(dāng)調(diào)整并繼續(xù)監(jiān)測其對數(shù)據(jù)庫性能的影響。經(jīng)過幾次調(diào)試之后,就可以得到一個相對合理的時間間隔值。
二、修剪進(jìn)程
如上圖所示,工作DB2 Capture程序進(jìn)程會將復(fù)制源表的變化都保存到CD表中。而這個CD表中的數(shù)據(jù)又會根據(jù)不同的應(yīng)用最終復(fù)制到其他的目的表中。也就是說,這個CD表只是一個中間表。一般用戶不會直接從這個表中讀取數(shù)據(jù),而是通過其他的表來訪問CD表中的相關(guān)信息。此時就會引出一個新的問題。即隨著時間的推移,這個CD表中的數(shù)據(jù)會越來越多。
這不僅會影響數(shù)據(jù)庫的性能,而且還會浪費存儲的空間。由于CD表中的數(shù)據(jù)會根據(jù)一定的規(guī)則復(fù)制到目標(biāo)表中。為此就需要有一種機(jī)制,來不定時的清理CD表中的數(shù)據(jù),將垃圾數(shù)據(jù)清除出去。此時就需要用到修剪進(jìn)程。
根據(jù)實際的應(yīng)用,這個CD表中的數(shù)據(jù)可以分為兩種類型。一是CD表中的數(shù)據(jù)已經(jīng)被復(fù)制到其他目的表中了,此時這個CD表中的數(shù)據(jù)已經(jīng)沒有任何作用了。二是CD表中的數(shù)據(jù)雖然沒有被復(fù)制到其他表中,但是已近過了有效期限。此時這個數(shù)據(jù)也已經(jīng)沒有用途了,也需要清除。針對這兩種不同的情況,又可以將修剪進(jìn)程分為正常修剪進(jìn)程與保留限制進(jìn)程。
正常修剪進(jìn)程就是指,當(dāng)修剪集表和修剪控制表中的值顯示已經(jīng)將組成這些行的事務(wù)復(fù)制到依賴于該CD表的所有目標(biāo)表時,就會將CD表中的相關(guān)行以及工作單元表中相應(yīng)的行刪除。簡單的說,就是需要用到這個CD表中的目標(biāo)表已經(jīng)將數(shù)據(jù)復(fù)制過去了,此時這個CD表中的相關(guān)記錄就會被刪除。不過需要注意,修剪也不是時刻進(jìn)行的。
也就是說,不是目的表將CD表中的數(shù)據(jù)復(fù)制過去,這個表中的數(shù)據(jù)就被刪除了。另外需要注意的是,目的表只是把CD表中的數(shù)據(jù)復(fù)制過去,而不是剪貼過去。這主要是因為可能有多張目的表需要用到這個CD表中的數(shù)據(jù)。修剪進(jìn)程會沒隔一段時間來檢查一下,是否滿足這個條件。如果滿足的話,就將CD表中的記錄刪除。
而這個時間間隔是由參數(shù)PRUNE_INTERVAL決定的。很顯然這個參數(shù)的值會影響到修剪進(jìn)程的效率。如何這個參數(shù)的值設(shè)置的比較大,那么修剪進(jìn)程作業(yè)的時間間隔就會比較長,這在一定程度上會提高數(shù)據(jù)庫的性能。但是如果設(shè)置的太長的話,則CD表中的記錄就會比較多,又會給數(shù)據(jù)庫的性能造成負(fù)面的影響。為此數(shù)據(jù)庫管理員必須要根據(jù)復(fù)制源數(shù)據(jù)更新的頻率,在必要的情況下要手工調(diào)整這個參數(shù)。
如果目的表永遠(yuǎn)不從這個CD表中復(fù)制記錄,難道修剪進(jìn)程永遠(yuǎn)不刪除CD表中的記錄嗎?其實不然。在修剪進(jìn)程中,除了正常修剪之外,還有一個保留限制修剪。這個這個修剪中,進(jìn)程會檢查CD表中某些記錄的存在時間,是否超過了有效期。如果超過了的話,則保留限制修剪進(jìn)程就會刪除CD表中的行以及工作單元表中相應(yīng)的行。
這個CD表中的有效期是有參數(shù)RETENTION_LIMIT來控制的。顯然這個參數(shù)也非常的重要。如果這個參數(shù)設(shè)置的比較短,那么可能還沒等用戶復(fù)制記錄,表中記錄就會因為過了有效期而導(dǎo)致數(shù)據(jù)被刪除。但是如果設(shè)置的比較長的話,那么垃圾數(shù)據(jù)就會越來越多,浪費存儲空間,影響數(shù)據(jù)庫性能。
對此筆者的建議是,數(shù)據(jù)庫管理員需要在性能、存儲空間、RETENTION_LIMIT參數(shù)之間取得一個均衡的值。一般情況下,只要數(shù)據(jù)庫性能與存儲空間允許,則***將這個參數(shù)的值設(shè)置的比較長一點。以免這表中的數(shù)據(jù)在目的表還沒有復(fù)制之前就被刪除。
除了以上這兩個進(jìn)程外,DB2 Capture程序還有管理進(jìn)程、串行化進(jìn)程等等。不過這些進(jìn)程要么是數(shù)據(jù)庫自動管理的,要么就是對于Capture程序的影響不是很大??傊?,不是數(shù)據(jù)庫管理員關(guān)注的重點,為此筆者就不做過多的闡述。筆者認(rèn)為,從數(shù)據(jù)庫性能的角度考慮,數(shù)據(jù)庫管理員主要是要關(guān)注這個幾個進(jìn)程中涉及到的時間間隔參數(shù)。
這些參數(shù)是把雙刃劍。設(shè)置的好,可以提高數(shù)據(jù)庫性能。如設(shè)置的不好,相反會降低數(shù)據(jù)庫的效率。
新聞標(biāo)題:專家對DB2Capture程序的詳細(xì)分析
分享URL:http://www.dlmjj.cn/article/djhoihd.html


咨詢
建站咨詢
