1. 程式人生 > >Oracle pctfree和pctused

Oracle pctfree和pctused

pctfree:預設為10,指當一個數據塊中的資料量達到90%時,就不可以再向這個塊中插入資料,剩餘的空間留做更新資料時使用。
pctused:一般為40,指當空閒空間量減少到pctfree時,不能插入資料直到當你刪除資料到40以下時才可以再次插入資料。

查看錶的pctfree和pctused:

SELECT TABLE_NAME,PCT_FREE,PCT_USED FROM DBA_TABLES;

更改表的pctfree:

ALTER TABLE 使用者.表名 PCTFREE VALUES;

當表空間使用自動段空間管理(ASSM)時,pctused不用設定。
查看錶空間是否是ASSM:

SELECT TABLESPACE_NAME,SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES;

設定這兩個值是為了減少行遷移與行連結。

行連結:當一次插入操作使資料塊裝不下插入後的資料時,會把要插入的行片段放到多個塊中。
行遷移:當一次更新操作使一個數據塊裝不下更新後的資料時,會把要更新的錶行資料移動到一個新的資料塊中(一個數據塊中會有很多表行資料),在舊的資料塊中只留下一個指向新資料塊的指標。

pctused為插入保證了一定的空間量,可以減少行連結。
pctfree為更新語句提供了一定的增長空間,可以減少行遷移。