Oracle pctfree和pctused
阿新 • • 發佈:2018-12-13
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為更新語句提供了一定的增長空間,可以減少行遷移。