• PCTFREE – Default 10 – Zero if no UPDATE activity – PCTFREE = 100 × upd / (average row length) • PCTUSED – Default 40 – Set if rows deleted – PCTUSED = 100 – PCTFREE – 100 × rows × (average row length) / blocksize 其中, upd : the average amount added by updates, in bytes。This is determined by subtracting the average row length of intercurrent average row length; average row length:在运行了analyize命令之后,这个值可以从dba_tables中的avg_row_len列中获得。
rows : the number of rows to be deleted before free list maintenance occurs。
– Default 10
– Zero if no UPDATE activity
– PCTFREE = 100 × upd / (average row length)
• PCTUSED
– Default 40
– Set if rows deleted
– PCTUSED = 100 – PCTFREE – 100 × rows × (average row length) / blocksize
其中,
upd : the average amount added by updates, in bytes。This is determined by
subtracting the average row length of intercurrent average row length;
average row length:在运行了analyize命令之后,这个值可以从dba_tables中的avg_row_len列中获得。
rows : the number of rows to be deleted before free list maintenance occurs。
。数据块的大小有DB_BLOCK_SIZE决定,并且只有通过重建数据库来得到调整。空间计算的根据来自于数据块。
。数据块由数据块头,数据区组成。数据区的使用由PCTFREE,PCTUSED控制。当INSERT发生时,
PCTFREE决定了该块所能容纳的最多的数据,即,剩余空间占数据块实际空间的百分比不小于PCTFREE。
空间估算中PCTFREE是很一个很重要的参数。
对于在表上进行的事务(TRANSACTION)类型要有一个清晰的认识,因为这会帮助如何更好的确定PCTFREE & PCTUSED。
例如:
如果PCTFREE的值太大,记录又可能很长,这会引起行链接(ROW-CHAINING),同时空间利用率也不高;
如果PCTFREE的值太小,会影响块数据记录的增长,容易引起行迁移(ROW-MIGURATING);
如果PCTUSED的值太大,空间上似乎没什么问题,但数据块的操作上又有潜在的性能问题,因为数据块需要在
FREELIST上反复搬动;
如果PCTUSED的值太小,则又出现了空间利用率不高的问题。
PCTFREE & PCTUSED表示的是DB_BLOCK_SIZE减去数据块头后的百分比值
这些参数也可以在表建好后再改,然后move tablespace