您的位置:首页 > 数据库 > Oracle

Pctfree&pctused&nitrans

2010-08-03 10:42 267 查看

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的原则如:
a)使用小的PCTFREE可以提高update性能,如果对象update操作很少,应该使用较小的pctfree。
b)使用大的PCTFREE可以提高update性能,如果对象的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息