1.1 Pctfree&pctused&nitrans
说明:主要是简单介绍关于pctfree&pctused的参数含义。
1. pctfree
说明:该参数用于指定在数据块内为update操作所预留空间的百分比,默认值为10 该参数有效值为0~99,但PCTFREE和PCTUSED总和不能超过100.在数据块达到 PCTFREE之前,插入新行和块头扩展都可以使用相应的剩余空间。 假定PCTFREE为20,那么当剩余空间超过20%时,insert操作可以使用数据块的剩余空间; 当剩余空间低于20%时,insert操作将不能使用该部分空间,这些剩余空间是为update操作保留的。 参数PCTFREE的原则如:
|
2. pctused
说明:该参数用于指定将数据块标记为可重用块的已用空间最低百分比,默认值为40.该参数有效值为0~99,但PCTFREE和PCTUSED总和不能超过100.当数据块已经达到PCTFREE时,该数据块将不能被插入数据,只能删除数据块的部分数据,并且数据块已用空间低于PCTUSED时,该数据块才能重新插入数据 |
3. initrans
说明:INITRANS用于指定初始事务入口个数,设置了该参数后,oracle会在数据块的块头上为每个事务入口预留相应的空间。INITRANS设置越大,数据块的剩余空间越少,当INITRANS预留的空间被用尽之后,oracle会从剩余空间中分配更多的空间,并且这些空间会变为块头空间永久部分 |
4. pctfree&pctused&freelist
pctused与pctfree控制数据块是否出现在freelist中,pctfree控制数据块中保留用于update的空间,当数据块中的free space小于pctfree设置的空间时,该数据块从freelist中去掉,当块由于dml操作free space大于pct_used设置的空间时,该数据库块将被添加在freelist链表中。 |
5. pctfree&pctused设定
说明:PCTFREE、PCTUSED的设定 • 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 |