pctfree

pctfree用來表示數據庫的塊還剩餘多少時,不能向其中作插入造做,其目的是已經插入的數據可能在作更新操做時,會增大數據塊,這樣就能夠利用剩餘的空間。 數據庫

Oracle 空閒列表管理機制與pctfree和pctused參數 
Oracle中有空閒列表的概念.空閒列表中存儲的是可供插入新行的塊信息
因此新的行數據只會插入到那些存在於空閒列表中的塊. 
空閒列表的管理機制與建表時pctfree和pctused參數兩個參數有緊密關係. 
當一個塊第一次開闢的時候,固然是在空閒列表中的.
隨着不斷地插入行數據,當使用率達到或者超過 1-PCTFREE%的時候,該塊從空閒列表中移出.
因此這時候新的行數據不可能再存放到該塊中. 那這個剩餘的PCTFREE%部分豈不是浪費了,固然不是了. 
隨着UPDATE 活動的增多,某些存在該塊中的行數據的就會變大,變大部分的數據就存放在PCTFREE部分中.

Delete活動,會將行數據從塊中抹去,這時候塊的使用率可能會低於1-pctfree%, 可是該塊仍是不會
當即回到空閒列表,也就是該塊這時候不會接受新的行數據.  那何時該塊會從新回到空閒列表中呢?
直到該塊的使用率低於PCTUSED%的時候,纔會回到空閒列表中,也就是說這時候能夠接受新的行數據了.

因此當你的系統有較多的update活動而且行數據的大小變化較大的時候,應該預留較多的pctfree.
例如一個公文審批系統,一個公文在流轉的過程當中,數據在不斷地變大。
對於一個沒有update活動的表,能夠將其設置爲0.如系統中的組織架構表,更新的可能性幾乎爲0。

若是你想充分地利用塊,則將PCTUsed 設置地高一點,以便在發生Delete活動後,快速地回到空閒列表中.
相關文章
相關標籤/搜索