資料表建立引數介紹(四)

realkid4發表於2011-03-06

 

ü        FREELISTS

 

Freelists與Freelist Group都是涉及到段物件空間分配的機制。分配給資料段的空閒空間包括兩個部分,高水位線HWM以上空閒塊和HWM以下空閒塊。

 

其中,HWM以下的空閒空間是透過Freelists進行管理。簡單的說,Freelists就是一個列表,列表上連線著所有管理的空閒資料塊。當進行insert或者update操作的時候,資料表段segment需要額外的空閒資料塊,就需要段segment進行空閒塊的管理。

 

在這個過程中,每個段頭上都有專門的freelists,進行空閒塊的管理。freelists引數就表示附加在這個段物件上處理freelist的個數,也就是一個freelists group上所容納的freelists的個數。

 

在我們的例項引數中,取定freelists=1,表示該資料表中每個freelists group上包括一個freelists。該引數的最小值為1,最大值的選取與當前資料庫使用資料塊大小db_block_size密切相關。如果設定不合適,會在執行階段報錯。

 

 

使用freelist的時候,當系統需要空閒塊儲存資料是,會向freelist進行空間請求,容易成為效能的瓶頸所在。所以從9i開始,Oracle引入了點陣圖表進行freelist的管理。

 

 

ü        Freelist Group

 

指定建立資料物件上使用的Freelist Group的數量。我們說,預設情況下,是使用一個freelist進行資料空閒塊管理。一些資料表如果分配比較頻繁,單個freelist可能不能滿足實際的需要,這時候可以考慮使用多個freelist group來緩解空間塊管理壓力。

 

 

說明:對錶空間空間的管理,Oracle存在手工段管理方式下Segment Management Manual。如果設定為自動段空間管理ASSM下,freelists和freelist group兩個引數是不其效果的。

 

 

ü        Buffer_POOL引數

 

Buffer_Pool引數決定了該資料段物件在SGA緩衝區中的管理策略。Oracle是不會直接對資料檔案中的資料進行操作的。對資料的讀寫操作,都是需要對檔案以資料塊的形式載入在記憶體SGA共享區中,之後對資料塊進行操作。如果是修改或者新增加操作,則由DBWn後臺進行寫回資料檔案。

 

 

資料塊在SGA區中駐留的場所就是Buffer Pool。Oracle在訪問一條資料的時候,首先會在Buffer Pool中尋找,看看該塊是不是已經快取在Buffer Pool中了。如果沒有,就從資料檔案中獲取這個資料塊。長期DBA們關注的資料塊命中率,也就是在Buffer Pool中發生的。

 

 

一般記憶體是小於資料庫容量的。為了加快速度,最理想的情況是將所有的資料載入在記憶體中。但是這種方法還存在一些距離。所以,總會有資料塊被從Buffer Pool中替換掉。目前Oracle採用LRU演算法進行資料塊淘汰,也就是最常用、訪問最頻繁的資料塊會更長時間儲存在緩衝區內,很少訪問的資料塊可能很快的被剔出緩衝區。這樣做的目的也就是保證經常訪問資料訪問速度。

 

 

在這樣的基礎上,Oracle對Buffer Pool進行了進一步的劃分。劃分為keep、default和recycle三個子池,這樣的劃分目的是在業務範疇上對資料進行進一步的分治。

 

ü        keep池的含義就是保持最長的時間。keep池中的物件,都是定義為經常使用的物件,保持最大限度的駐留時間。不會輕易被剔出Buffer Cache;

ü        recycle池是為了不經常訪問的資料物件塊準備的。通常被載入之後,不希望長時間的儲存。

ü        default是buffer pool的預設選項,是介於keep和recycle兩類之間的一種物件快取方式。

 

要說明的是兩點:

 

1、三種型別池物件雖然目的定義不同,但是使用的管理演算法仍然是LRU演算法。區別只是在從業務上對資料物件進行劃分,而這個定義是掌握在系統設計和DBA手中;

2、當我們對SGA空間進行動態管理的時候,三個快取池空間是透過Oracle動態進行調整的。所以,我們現在已經不需要分別定義空間的大小,而只需要定義三類物件是什麼就可以了。

 

 

回到buffer_pool引數,經過了上面的說明。buffer_pool的含義也就比較清楚了。Buffer_pool定義了該段物件進行快取的策略。取值有default、keep和recycle。

 

 

 

經過這個系列,我們初步研究了涉及段物件的基本引數和用法。當然每個引數在使用的時候是有不同的側重和方向,本文的作用也只是一個瀏覽引導。進一步請參考Oracle相關文件中的說明。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-688508/,如需轉載,請註明出處,否則將追究法律責任。

相關文章