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