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