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