資料表建立引數介紹(四)
ü 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料表建立引數介紹(一)
- 資料表建立引數介紹(二)
- 資料表建立引數介紹(三)
- docker 引數介紹Docker
- MT6589四核單晶片資料,MT6589處理器引數介紹晶片
- gcc 常用引數介紹GC
- HRMS Function 引數介紹Function
- 四種大資料分析方法介紹!大資料
- Oracle 各版本引數/隱藏引數 介紹Oracle
- MongoDB啟動引數介紹MongoDB
- PostgreSQLGUC引數級別介紹SQL
- margin引數簡單介紹
- margin 引數簡單介紹
- ipchains引數介紹(轉)AI
- MySQL資料備份多種引數介紹及簡單示例MySql
- Oracle expdp impdp dump引數介紹Oracle
- eclipse 啟動引數介紹Eclipse
- 【儲存】megacli 常用引數介紹
- javascript bind()第一個引數以後引數介紹JavaScript
- 【DATAGUARD】Oracle21c Dataguard建立注意事項及主要引數介紹Oracle
- Oracle表空間建立引數解析Oracle
- 詳解Oracle建立表的引數Oracle
- Oracle 靜態引數與動態引數型別介紹Oracle型別
- mysql一些引數的介紹MySql
- ORACLE推導引數Derived Parameter介紹Oracle
- 【體系結構】Oracle引數介紹Oracle
- oracle 塊基本引數介紹(英文) (zt)Oracle
- Oracle sqlplus prelim 引數介紹OracleSQL
- MySQL Key分割槽表建立方法介紹MySql
- MT7682晶片手冊資料, MT7682處理器引數介紹晶片
- Oracle 表空間 建立引數 說明Oracle
- ECharts資料圖表使用介紹 超詳細Echarts
- CSS 建立介紹CSS
- mysqldump中skip-tz-utc引數介紹MySql
- ORACLE初始化引數檔案介紹Oracle
- linux的vm相關引數介紹Linux
- Oracle 優化引數 optimizer_mode 介紹Oracle優化
- MongoDB資料庫建立的基本規範簡要介紹MongoDB資料庫