Oracle 空閒列表管理機制與pctfree和pctused引數

tieshuai發表於2007-12-21

 被擊碎的自信,被老本行Oracle一片一片的恢復。- ----譚志堅     

pctfree引數設小,可用於insert的空間就多一些了,但是,如果update多的話,那pctfree 需要設定大 點。

Oracle中有空閒列表的概念.空閒列表中儲存的是可供插入新行的塊資訊.所以新的行資料只會插入到那些存在於空閒列表中的塊. 空閒列表的治理機制與建表時pctfree和pctused引數兩個引數有緊密關係. 當一個塊第一次開闢的時候,當然是在空閒列表中的.
  隨著不斷地插入行資料,當使用率達到或者超過 1-PCTFREE%的時候,該塊從空閒列表中移出.
  所以這時候新的行資料不可能再存放到該塊中. 那這個剩餘的PCTFREE%部分豈不是浪費了,當然不是了.
  隨著UPDATE 活動的增多,某些存在該塊中的行資料的就會變大,變大部分的資料就存放在PCTFREE部分中.
  Delete活動,會將行資料從塊中抹去,這時候塊的使用率可能會低於1-pctfree%, 但是該塊還是不會立即回到空閒列表,也就是該塊這時候不會接受新的行資料.  那什麼時候該塊會重新回到空閒列表中呢?
  直到該塊的使用率低於PCTUSED%的時候,才會回到空閒列表中,也就是說這時候可以接受新的行資料了.
  所以當你的系統有較多的update活動並且行資料的大小變化較大的時候,應該預留較多的pctfree.
  例如一個公文審批系統,一個公文在流轉的過程中,資料在不斷地變大。
對於一個沒有update活動的表,可以將其設定為0.如系統中的組織架構表,更新的可能性幾乎為0。
  假如你想充分地利用塊,則將PCTUsed 設定地高一點,以便在發生Delete活動後,快速地回到空閒列表中.

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

相關文章