1、創建表時候,注意PCTFREE參數的做用html
PCTFREE:爲一個塊保留的空間百分比,表示數據塊在什麼狀況下能夠被insert,默認是10,表示當數據塊的可用空間低於10%後,就不能夠被insert了,只能被用於update;即:當使用一個block時,在達到pctfree以前,該block是一直能夠被插入的,這個時候處在上升期。oracle
PCTUSED:是指當塊裏的數據低於多少百分比時,又能夠從新被insert,通常默認是40,即40%,即:當數據低於40%時,又能夠寫入新的數據,這個時候處在降低期。post
2、舉例說明url
假設你一個塊能夠存放100個數據,並且PCTFREE 是10,PCTUSED是40,則:不斷的向塊中插入數據,若是當存放到90個時,就不能存放新的數據,這是受pctfree來控制,預留的空間是給UPDATE用的。spa
當你刪除一個數據後,再想插入個新數據行不行?不行,必須是刪除41個,即低於40個之後才能插入新的數據的,這是受pctused來控制的。htm
注意:若是表空間上啓用了ASSM,在創建表的時候,只能指定PCTFREE,不然可用指定PCTFREE和PCTUSED。blog
3、調整pctfree與pctused
一、經過user_tables的pct_free,pct_used來查看
select a.table_name, a.pct_free, a.pct_used, a.* from user_tables a;
說明:
pctfree表示用於保留更新操做的百分比,若是超過該值不能插入數據。
pctused表示數據所佔最低百分比,若是達到pctfree時不能插入,delete後若是達到pctused才能夠用來insertget
二、若是你使用的是自動管理表空間pctused不須要設置
altertable tablename pctfree values;
說明:
pctfree默認是10,主要看更新的數據有多大,能夠查看錶的max_row_len若是很大又頻繁更新能夠考慮增長該值。
pctused主要看刪除數據的大小,若是很大能夠調大該值,若是不是很頻繁能夠設置小一些30-40
pctused+pctfree<90it
三、查看自動管理表空間
select tablespace_name,segment_space_management from user_tablespaces; --segment_space_management爲auto表示自動管理表空間
主要起到節省表空間的做用。table