2 2 資料庫高速緩衝區

2022-09-16 19:57:12 字數 2115 閱讀 4711

您所在的位置:讀書頻道 > 資料庫 > oracle > 2.2 資料庫高速緩衝區

2012-05-10 21:38 張天慧 清華大學出版社 字型大小:t | t

綜合評級:

《oracle管理之道》第2章oracle例項,本章重點在於深入解析oracle本身執行時的記憶體空間,也就是oracle的例項主體,但誠如本章開宗明義所說的,oracle例項的成立並不代表使用者或應用程式使用者就能順利使用oracle資料庫,還必須加上其他的程式,如程式全域性區、使用者全域性區域與其他程式等,以後的章節將一一對其進行深入**。本節為大家介紹資料庫高速緩衝區。

ad:2.2  資料庫高速緩衝區

oracle有乙個很重要的概念,就是除非到了必要的時候,否則不會等待磁碟i/o,因為磁碟i/o是計算機系統執行中最慢的乙個部分,所以,所執行的i/o越少越好,在oracle的資料庫架構設計中,這種概念無所不在,資料庫高速緩衝區(database buffer cache)即是應此概念而規劃出來的,其基礎概念如下。

資料庫高速緩衝區的主要功能是用來暫時存放最近讀取自資料庫中的資料,也就是資料檔案(data file)內的資料,而資料檔案是以資料塊(block)為單位,因此,資料庫高速緩衝區中的大小是以塊為基數。當使用者通過應用程式第一次向oracle資料庫發出查詢請求時,oracle會先在資料庫高速緩衝區內尋找該資料,如果有該請求所需要的資料,就直接從資料庫高速緩衝區傳回給使用者,這稱為快取命中(cache hit),這樣就可以減少硬碟上的i/o次數。如果oracle發現使用者要的資料並不在資料庫高速緩衝區裡,就稱為快取失誤(cache miss),oracle會從資料庫中讀取所需要的資料塊,先放入資料庫高速緩衝區中,再傳送給使用者,如圖2-22所示。

有關資料庫高速緩衝區命中率的計算方式如下:

圖2-22  資料庫高速緩衝區

db block gets:是指dml指令所得到的資料塊個數。

consistent gets:是指查詢指令得到的資料塊個數。

logical reads:將db block gets與consistent gets相加得到的資料塊個數。

physical reads:實際從硬碟中讀出的資料。

提示資料庫高速緩衝區命中率的公式是cache hit ratio = 1- (physical reads/(db block gets + consistent gets))。

利用以上的查詢獲取快取命中率(hit ratio)最好要大於90%。

以上的查詢命中率以整個資料庫高速緩衝區為主。

資料庫高速緩衝區中包含三種不同性質的快取:

dirty buffer:這裡的buffer中存放的是已修改,但尚未寫入資料庫的資料。

free buffer:這裡的buffer是指其中的內容和資料庫內的內容是一模一樣的,也就是這些buffer已經寫入資料庫內,隨時可以拿來覆蓋重複使用。

pinned buffer:這裡的buffer是指正在被使用的buffer。

資料庫高速緩衝區是利用兩種list來管理內部三種不同性質的buffer:

dirty list:包含dirty buffer,主要是將準備寫入資料庫的資料,在適當的時機寫入。

lru list:包含free buffer、dirty buffer、pinned buffers。

oracle對於資料庫高速緩衝區的使用方式是利用後台程序的dbwrn寫入資料檔案內,而dbwrn將dirty buffer從資料庫高速緩衝區取出再寫到資料檔案內,主要是通過兩種方式:先期寫入協議機制和lru機制。

關於資料庫高速緩衝區的基本概念及其執行方式,請參考作者另一本著作《oracle 資料庫管理與維護》,在此就不多作贅述。

快取記憶體與緩衝區

作業系統中使用磁碟快取記憶體技術來提高磁碟的i o速度,對快取記憶體複製的訪問要比原始資料訪問更為高效。例如,正在執行的程序的指令既儲存在磁碟上,也儲存在物理記憶體上,也被複製到cpu的二級和一級快取記憶體中。不過,磁碟快取記憶體技術不同於通常意義下的介於cpu與記憶體之間的小容量高速儲存器,而是指...

資料庫緩衝區頁面替換策略

當緩中池裡沒有可用的頁面時,緩衝區管理器要使用某種策略把某些頁面的資料寫回磁碟,騰出自由頁面以便儲存後面的讀寫操作的資料,這一過程稱為頁面置換。sql server 2000使用乙個專門的程序,採用時鐘演算法進行頁面置換。它為每個緩衝區設定乙個計數器,每隔一段時間則順序掃瞄緩衝池裡的每乙個緩衝區,檢...

Oracle資料庫緩衝區工作原理

本文 oracle資料緩衝區的內部機制 oracle用這一記憶體來防止不必要的資料塊從磁碟重讀。理解oracle資料緩衝區如何操作,是成功地運用它們調整資料庫效能的關鍵。在oracle 8i以前的版本裡,當資料塊被從磁碟送進資料緩衝區的時候,資料塊會被自動地放置到最近使用過的資料列表的前部。但是,這...