如何提高DB2數(shù)據(jù)庫(kù)備份和恢復(fù)的效率
數(shù)據(jù)庫(kù)是信息系統(tǒng)建設(shè)的關(guān)鍵部分,因此數(shù)據(jù)庫(kù)的備份和恢復(fù)十分重要。本文將向您介紹DB2數(shù)據(jù)庫(kù)提高備份與恢復(fù)的效率的方法,供您參考,希望對(duì)您有所幫助。
如果備份或者恢復(fù)一個(gè)DB2數(shù)據(jù)庫(kù)需要花費(fèi)幾個(gè)小時(shí)時(shí)間,那么及時(shí)這個(gè)備份與恢復(fù)方案再安全,也于事無補(bǔ)?;蛘哒f,是一個(gè)不合適的解決方案。為此在考慮備份恢復(fù)方案本身安全性的同時(shí),也需要兼顧備份與恢復(fù)的效率。在這篇文章中,筆者就介紹一下提高數(shù)據(jù)備份與恢復(fù)效率的一些常用技巧。經(jīng)過筆者多個(gè)案例的實(shí)際應(yīng)用,證明這些技巧在提高DB2數(shù)據(jù)庫(kù)備份與恢復(fù)的性能具有很大的幫助。
一、了解數(shù)據(jù)的邏輯存儲(chǔ)結(jié)構(gòu)。
如果以前有Oracle數(shù)據(jù)庫(kù)經(jīng)驗(yàn)的管理員,那么了解DB2數(shù)據(jù)庫(kù)的邏輯存儲(chǔ)結(jié)構(gòu)就比較容易了,因?yàn)閮烧咴谶@方面很類似。對(duì)于DB2數(shù)據(jù)庫(kù)來說,其邏輯存儲(chǔ)結(jié)構(gòu)主要分為數(shù)據(jù)表、表空間與數(shù)據(jù)庫(kù)三個(gè)級(jí)別。數(shù)據(jù)表包含在表空間之中,而表空間又包含在數(shù)據(jù)庫(kù)當(dāng)中。換一句話說,一個(gè)DB2數(shù)據(jù)庫(kù)包含多個(gè)表空間,而每個(gè)表空間又包含了多個(gè)數(shù)據(jù)表。一個(gè)數(shù)據(jù)表示不能夠保存在多個(gè)表空間當(dāng)中的。同理,一個(gè)表空間也不能夠保存在多個(gè)數(shù)據(jù)庫(kù)之中。這跟小學(xué)的實(shí)施,班級(jí)里分組類似。一個(gè)班(相當(dāng)于一個(gè)數(shù)據(jù)庫(kù))分為四個(gè)小組(每個(gè)小組相當(dāng)于一個(gè)表空間),然后每個(gè)小組又是由一個(gè)個(gè)的學(xué)生組成的(一個(gè)個(gè)學(xué)生相當(dāng)于一個(gè)個(gè)數(shù)據(jù)表)。這個(gè)組織結(jié)構(gòu)可以有什么好處呢?此時(shí)學(xué)校校長(zhǎng)(相當(dāng)于數(shù)據(jù)庫(kù)管理員)就可以按照班級(jí)、小組為單位對(duì)數(shù)據(jù)進(jìn)行管理,也可以對(duì)學(xué)生進(jìn)行一對(duì)一的面談,從而提高數(shù)據(jù)庫(kù)管理的靈活性。
而對(duì)于數(shù)據(jù)備份與恢復(fù)作業(yè)來說,采用如此的邏輯結(jié)構(gòu),數(shù)據(jù)庫(kù)管理員既可以對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份與恢復(fù)(對(duì)整個(gè)班級(jí)進(jìn)行管理);也可以以表空間為單位,對(duì)表空間中的所有數(shù)據(jù)表進(jìn)行備份與恢復(fù)操作(以小組為單位進(jìn)行管理);甚至可以對(duì)單獨(dú)的數(shù)據(jù)表進(jìn)行備份與恢復(fù)的操作(對(duì)單個(gè)學(xué)生進(jìn)行管理)。即可以分別從數(shù)據(jù)表、表空間、數(shù)據(jù)庫(kù)三個(gè)級(jí)別來進(jìn)行備份與恢復(fù)的操作。這分級(jí)別的管理,不僅增強(qiáng)了操作的靈活性,而且還可以提高備份與操作的效率。如現(xiàn)在用戶需要對(duì)某個(gè)表進(jìn)行更新,如需要調(diào)整價(jià)格表中的價(jià)格。此時(shí)數(shù)據(jù)庫(kù)管理員就只需要對(duì)價(jià)格表進(jìn)行更新即可,而不需要對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份。顯然這可以減少備份的時(shí)間。若出現(xiàn)問題的話,也只需要對(duì)這張表中的內(nèi)容進(jìn)行恢復(fù)。這也可以在很大程度上減少恢復(fù)的時(shí)間?;謴?fù)一張表肯定比恢復(fù)整個(gè)數(shù)據(jù)庫(kù)所用的時(shí)間要少的多。#p#
二、合理規(guī)劃表空間提高數(shù)據(jù)庫(kù)備份恢復(fù)性能。
既然數(shù)據(jù)庫(kù)備份與恢復(fù)可以按三個(gè)級(jí)別來進(jìn)行,那么數(shù)據(jù)庫(kù)管理員可以根據(jù)這個(gè)特性來合理規(guī)劃表空間,以提高數(shù)據(jù)庫(kù)備份與恢復(fù)的性能。如在DB2數(shù)據(jù)庫(kù)中,雖然對(duì)于LOB等大容量數(shù)據(jù)類型提供了很好的支持。但是,畢竟其容量比較大,有時(shí)候其所占的數(shù)據(jù)庫(kù)容量可能達(dá)到整個(gè)數(shù)據(jù)庫(kù)的二分之一。為此這些大容量的數(shù)據(jù)類型就成為了數(shù)據(jù)庫(kù)備份與恢復(fù)作業(yè)作業(yè)的性能瓶頸。如果在數(shù)據(jù)庫(kù)備份與恢復(fù)的時(shí)候,不備份這些LOB數(shù)據(jù)類型的數(shù)據(jù),那么數(shù)據(jù)庫(kù)備份與恢復(fù)的時(shí)間可能會(huì)減少三分之一,甚至二分之一。
為此筆者建議,在規(guī)劃數(shù)據(jù)表的時(shí)候,最好將LOB數(shù)據(jù)類型的數(shù)據(jù)與其他數(shù)據(jù)分成兩張表來存放。如在一個(gè)產(chǎn)品信息表的表中,包含一個(gè)產(chǎn)品圖片的字段,這個(gè)字段就是一個(gè)LOB數(shù)據(jù)類型。雖然可以將它們?cè)O(shè)計(jì)在同一個(gè)表中。不過筆者還是建議將他們分為兩個(gè)表來存放,然后通過關(guān)鍵字將他們連接起來。最后將這個(gè)兩張表分別存放到不同的表空間中。如將有LOB數(shù)據(jù)類型的表統(tǒng)一保存在LOB表空間中。如此有什么好處呢?當(dāng)數(shù)據(jù)庫(kù)進(jìn)行備份時(shí),平時(shí)可以只對(duì)非LOB表空間中的數(shù)據(jù)進(jìn)行備份。由于LOB表空間中的一些信息一般不怎么會(huì)更新,就可以一個(gè)星期更新一次?;蛘咦屍湓跀?shù)據(jù)庫(kù)比較空閑的時(shí)間進(jìn)行備份。經(jīng)過一段時(shí)間的測(cè)試,可以發(fā)現(xiàn)每天或者每周數(shù)據(jù)庫(kù)的空閑時(shí)斷。如此規(guī)劃的話,就可以將平時(shí)備份的效率提高。同理,在恢復(fù)的時(shí)候也可以按照表空間級(jí)別來進(jìn)行恢復(fù),從而縮短數(shù)據(jù)庫(kù)恢復(fù)的時(shí)間。
這個(gè)方案的核心就是將LOB等大容量數(shù)據(jù)類型的數(shù)據(jù)與普通表獨(dú)立開來,并且存放在不同的表空間中。然后將LOB表空間與非LOB表空間進(jìn)行分開管理,分開備份與恢復(fù),從而提高數(shù)據(jù)庫(kù)備份與恢復(fù)的效率。為此在建立表時(shí)將LOB數(shù)據(jù)類型與其他數(shù)據(jù)類型分開存放是關(guān)鍵。
三、對(duì)于圖片等LOB數(shù)據(jù)類型的另類處理方式。
當(dāng)數(shù)據(jù)庫(kù)中LOB數(shù)據(jù)類型比較多的時(shí)候,往往會(huì)在很大程度上影響數(shù)據(jù)庫(kù)的性能。不僅數(shù)據(jù)備份與恢復(fù)會(huì)受到影響,連平時(shí)的查詢也會(huì)受到牽連。為此筆者有時(shí)候給企業(yè)部署DB2數(shù)據(jù)庫(kù)系統(tǒng)的時(shí)候,往往會(huì)建議他們,不要將圖片等信息存放在數(shù)據(jù)庫(kù)中。那么當(dāng)用戶需要查詢圖片信息時(shí),該如何處理呢?筆者建議他們將圖片統(tǒng)一放到網(wǎng)絡(luò)上的一個(gè)共享服務(wù)器中。然后在數(shù)據(jù)庫(kù)中只存放這個(gè)圖片的路徑。最后在客戶端界面設(shè)計(jì)時(shí),可以創(chuàng)建一個(gè)指向圖片的鏈接。當(dāng)用戶需要訪問某個(gè)產(chǎn)品的圖片信息時(shí),則只需要點(diǎn)擊產(chǎn)品管理界面上的圖片鏈接,就可以打開這張圖片。在這種情況下,數(shù)據(jù)庫(kù)實(shí)際存儲(chǔ)的只是圖片的路徑(也就是一個(gè)普通的字符型字段),而不是圖片本身。故可以提高客戶端窗口顯示的速度,同時(shí)也可以提高數(shù)據(jù)庫(kù)備份與恢復(fù)的效率。#p#
四、為系統(tǒng)設(shè)置合適的并行度與緩存來提高數(shù)據(jù)庫(kù)備份與恢復(fù)性能。
行度與增加緩沖區(qū)的大小可以提高數(shù)據(jù)庫(kù)備份與恢復(fù)的性能。為此在對(duì)DB2數(shù)據(jù)庫(kù)進(jìn)行備份的時(shí)候,可以通過給并行度、緩沖區(qū)樹木和緩沖區(qū)大小分配合適的值來提高數(shù)據(jù)庫(kù)備份與恢復(fù)的性能。如一般情況下,筆者建議將數(shù)據(jù)庫(kù)緩沖區(qū)的大小設(shè)置為數(shù)據(jù)內(nèi)存的二倍到三倍。如果備份中包含大容量的數(shù)據(jù)類型,可以適當(dāng)提高整個(gè)比例。并且將數(shù)據(jù)庫(kù)緩沖區(qū)的數(shù)目設(shè)置為硬盤I/O緩沖數(shù)目的兩倍。如此設(shè)置之后,數(shù)據(jù)庫(kù)的備份與恢復(fù)性能能夠得到很大的改善。
不過需要注意的是,這個(gè)調(diào)整會(huì)受到服務(wù)器硬件資源的限制。當(dāng)服務(wù)器內(nèi)存等硬件設(shè)備不支持這么大的數(shù)據(jù)緩沖區(qū)與數(shù)據(jù)緩沖區(qū)數(shù)目時(shí),反而會(huì)因?yàn)闆]有足夠的內(nèi)存分配給緩沖區(qū),從而導(dǎo)致數(shù)據(jù)備份與恢復(fù)的失敗。為此筆者建議,在調(diào)整數(shù)據(jù)緩沖區(qū)的時(shí)候,需要特別注意。一般來說,調(diào)整好這些參數(shù)之后,需要持續(xù)追蹤一段時(shí)間,以確保這些調(diào)整不會(huì)影響到數(shù)據(jù)庫(kù)的正常備份與恢復(fù),不會(huì)與數(shù)據(jù)庫(kù)的硬件配置相沖突。