吳昊
摘 要 數(shù)據(jù)庫(kù)是企業(yè)信息系統(tǒng)的基礎(chǔ),數(shù)據(jù)庫(kù)管理軟件是企業(yè)計(jì)算的核心。一個(gè)好的數(shù)據(jù)庫(kù)決定著一個(gè)企業(yè)的管理,而數(shù)據(jù)庫(kù)緩沖池的使用和優(yōu)化,能使數(shù)據(jù)庫(kù)的運(yùn)行效率提高,并有助于數(shù)據(jù)庫(kù)的設(shè)計(jì)、調(diào)優(yōu)和故障診斷。本文主要從緩沖池的工作原理進(jìn)行分析,并對(duì)緩沖池的設(shè)計(jì)提出建議。
關(guān)鍵詞 DB2 緩沖池 數(shù)據(jù)庫(kù) 隊(duì)列
中圖分類(lèi)號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A
1研究背景
數(shù)據(jù)庫(kù)是企業(yè)信息系統(tǒng)的基礎(chǔ),數(shù)據(jù)庫(kù)管理軟件是企業(yè)計(jì)算的核心。DB2數(shù)據(jù)庫(kù)是一個(gè)典型關(guān)系型數(shù)據(jù)庫(kù)管理軟件,在國(guó)內(nèi)以及全球有著廣泛的應(yīng)用。對(duì)DB2數(shù)據(jù)庫(kù)中的緩沖池的設(shè)置與使用有全面和深入的了解,有助于數(shù)據(jù)庫(kù)的設(shè)計(jì)、調(diào)優(yōu)和故障診斷。一個(gè)好的數(shù)據(jù)庫(kù)決定著一個(gè)企業(yè)的管理,而緩沖池的優(yōu)化能使數(shù)據(jù)庫(kù)的運(yùn)行效率提高。
2緩沖池的概念
緩沖池(BUFFERPOOL),是數(shù)據(jù)庫(kù)所使用的一塊內(nèi)存空間,用于進(jìn)行數(shù)據(jù)的讀取和更新。它是數(shù)據(jù)庫(kù)級(jí)共享內(nèi)存的重要組成部分。緩沖池的大小是以頁(yè)為單位,頁(yè)的大?。≒agesize)分為4K、8K、16K、32K,四種。每個(gè)數(shù)據(jù)庫(kù)至少要設(shè)置一個(gè)BUFFERPOOL。
3緩沖池的分類(lèi)
3.1默認(rèn)緩沖池
數(shù)據(jù)庫(kù)建立時(shí),DB2會(huì)自動(dòng)創(chuàng)建一個(gè)名為IBMDE—FAULTBP的緩沖池,其Pagesize為4KB。數(shù)據(jù)庫(kù)中的所有表格空間可以共享這個(gè)緩沖池。
3.2隱藏緩沖池
當(dāng)數(shù)據(jù)庫(kù)啟動(dòng)時(shí),會(huì)同時(shí)啟動(dòng)4個(gè)Pagesize分別為4K、8K、16K和32K的小型緩沖池。這些緩沖池在系統(tǒng)編目中看不到,它只有在主緩沖池(IBMDEFAULTBP或用戶(hù)建立的緩沖池)無(wú)法啟動(dòng)時(shí),才被使用。
3.3用戶(hù)建立的緩沖池
由于表格空間的Pagesize必須與它所用的緩沖池的Pagesize一致,所以,如果用戶(hù)創(chuàng)建了非4K的表格空間,那么就需要為這個(gè)表格空間創(chuàng)建單獨(dú)的緩沖池。
4緩沖池中的數(shù)據(jù)
數(shù)據(jù)會(huì)在緩沖池中一直被保存,直到關(guān)閉這個(gè)數(shù)據(jù)庫(kù)或者這個(gè)數(shù)據(jù)占用的內(nèi)存需要被其他數(shù)據(jù)使用時(shí)才會(huì)刪除。當(dāng)SQL指令修改了緩沖池中的數(shù)據(jù)頁(yè)后,數(shù)據(jù)頁(yè)并不會(huì)馬上因?yàn)槭挛锏拇_認(rèn)而被寫(xiě)回表格空間(磁盤(pán))中,只有出現(xiàn)以下兩種情況時(shí),數(shù)據(jù)才會(huì)被寫(xiě)回表格空間中。
(1)當(dāng)緩沖池中被更改的數(shù)據(jù)頁(yè)所占的比例達(dá)到數(shù)據(jù)庫(kù)參數(shù)(chngpgs—thresh)所設(shè)定的值時(shí),緩沖池中被更改過(guò)的數(shù)據(jù)頁(yè)就會(huì)被寫(xiě)回表格空間中。
(2)當(dāng)緩沖池中已經(jīng)沒(méi)有足夠的空間存放從磁盤(pán)調(diào)入的新數(shù)據(jù)時(shí),DB2也會(huì)將緩沖池中被更改過(guò)的數(shù)據(jù)頁(yè)寫(xiě)回表格空間中,騰出空間存放新調(diào)入的數(shù)據(jù)
5緩沖池對(duì)系統(tǒng)性能的影響
根據(jù)以上內(nèi)容我們可以得出,緩沖池就是數(shù)據(jù)庫(kù)響應(yīng)SQL指令,就是進(jìn)行數(shù)據(jù)處理的內(nèi)存區(qū)域。當(dāng)DB2執(zhí)行SQL指令時(shí),首先會(huì)去緩沖池尋找相關(guān)的數(shù)據(jù)頁(yè)或者是相關(guān)的索引頁(yè),如果在緩沖池中尋找到了存在的所要的數(shù)據(jù),就可以直接使用緩沖池中的數(shù)據(jù),如果沒(méi)有就可以從表格空間中將需要的數(shù)據(jù)調(diào)入緩沖池然后再使用。由于在內(nèi)存和磁盤(pán)中讀取數(shù)據(jù)的速度前者要比后者快很多,所以就需要設(shè)計(jì)多個(gè)大容量的緩沖池來(lái)緩存大量的數(shù)據(jù)頁(yè),這樣做就可以提高緩沖池的命中率,減少磁盤(pán)讀寫(xiě),這樣做就可以顯著的提高數(shù)據(jù)讀取速度。但是,如果總的緩沖池設(shè)置太大,導(dǎo)致沒(méi)有足夠的物理內(nèi)存進(jìn)行分配,那么DB2將會(huì)啟用上面介紹的隱藏緩沖池,這種緩沖池容量非常小,使用時(shí)會(huì)發(fā)生大量的數(shù)據(jù)頁(yè)交換,導(dǎo)致系統(tǒng)性能急劇下降,一個(gè)緩沖池容量的設(shè)置往往決定著一個(gè)數(shù)據(jù)庫(kù)讀取數(shù)據(jù)的速度。
6緩沖池的設(shè)計(jì)原則
由于緩沖池的大小會(huì)對(duì)數(shù)據(jù)庫(kù)的運(yùn)行性能產(chǎn)生很大的影響,所以緩沖池的設(shè)計(jì)至關(guān)重要,根據(jù)筆者的工作經(jīng)驗(yàn)和相關(guān)技術(shù)資料,對(duì)緩沖池的設(shè)計(jì)提出如下幾條建議:
(1)為數(shù)據(jù)庫(kù)中所用到的每種Pagesize創(chuàng)建一個(gè)緩沖池,相同Page~size的表格空間共享同一個(gè)緩沖池,盡量不要?jiǎng)?chuàng)建過(guò)多的緩沖池,不然會(huì)增加管理的復(fù)雜性。
(2)將數(shù)據(jù)庫(kù)中的表格按照訪(fǎng)問(wèn)的頻繁程度,分別存放在不同的表格空間中,使用不同的緩沖池進(jìn)行處理。避免因?yàn)閷?duì)訪(fǎng)問(wèn)頻度低的表格的一次訪(fǎng)問(wèn),而將一些需要經(jīng)常訪(fǎng)問(wèn)的數(shù)據(jù)頁(yè)擠出緩沖池。
(3)要熟悉你所使用的操作系統(tǒng),掌握操作系統(tǒng)的內(nèi)存體系結(jié)構(gòu)(是64位的還是32位的),確認(rèn)DB2的內(nèi)存尋址空間范圍。對(duì)于64位的實(shí)例來(lái)說(shuō)其尋址范圍是2的64次方,空間足夠大,只要有足夠大的實(shí)際物理內(nèi)存進(jìn)行分配即可。但對(duì)于32位的實(shí)例來(lái)說(shuō)其尋址空間范圍是2的32次方,即4GB。不管實(shí)際物理內(nèi)存有多大,實(shí)例、數(shù)據(jù)庫(kù)的配置都受到4GB可尋址空間的限制,不同的操作系統(tǒng)其限制大小也不同,AIX大約為2GB,而HP則為800MB左右,所以要根據(jù)你的操作系統(tǒng)性能來(lái)設(shè)計(jì)緩沖池的大小。不要過(guò)大的設(shè)計(jì)緩沖池避免浪費(fèi)內(nèi)存緩沖池的創(chuàng)建決定著性能的好壞,合理使用內(nèi)存。
7結(jié)束語(yǔ)
通過(guò)緩沖池對(duì)數(shù)據(jù)庫(kù)的性能的影響發(fā)現(xiàn),緩沖池直接影響數(shù)據(jù)庫(kù)性能的好壞,往往一個(gè)公司的數(shù)據(jù)庫(kù)的好壞就決定著這個(gè)公司的發(fā)展前景,如何使用緩沖池,設(shè)計(jì)緩沖池就是對(duì)整個(gè)公司的負(fù)責(zé)。同樣緩沖池的設(shè)計(jì)不應(yīng)過(guò)大或者分配過(guò)小,過(guò)大會(huì)導(dǎo)致浪費(fèi),過(guò)小則不能發(fā)揮。總體來(lái)說(shuō)好的緩沖池的設(shè)計(jì)就代表著好的數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)處理數(shù)據(jù)的速度明顯的增快。
參考文獻(xiàn)
[1] 莊濟(jì)誠(chéng).DB2數(shù)據(jù)庫(kù)管理與應(yīng)用教程.清華大學(xué)出版社,2004.2.
[2] 牛新莊.循序漸進(jìn)DB2一DBA系統(tǒng)管理、運(yùn)維與應(yīng)用案例.清華大學(xué)出版社,2009.
[3] 湯子瀛,楊成忠,哲鳳屏.計(jì)算機(jī)操作系統(tǒng).臺(tái)灣:儒林圖書(shū)公司,1995.