ITPub博客

首页 > 数据库 > Oracle > 创建表时参数PCTFREE和PCTUSED详解

创建表时参数PCTFREE和PCTUSED详解

原创 Oracle 作者:passion_of_data 时间:2011-06-20 16:46:36 0 删除 编辑

创建表时参数PCTFREE和PCTUSED是什么意思?
pctfree:用于指定BLOCK中必需保留的最小空间的比例。
pctused:为一个百分比数值,当BLOCK中已经使用的空间降低到该数值以下时,该BLOCK才是可用的,达到或是超过这个数值的BLOCK是不可用的。
一般在控制具有独立segment结构的对象时,使用这两个参数来控制BLOCK的存储管理
initrans:指定可以并发操作该表的事务的数目。
 
用CREATE 命令的PCTUSED、PCTFREE、INITTRANS、MAXTRANS、FREELIST GROUPS 和FREELISTS参数来控制表、索引或簇的数据块中的空间使用。

可使用PCTFREE和PCTUSED参数控制数据块何时进入或离开表、索引或簇的可用清单。使用PCTFREE参数设置最大的阈值,以控制对将来的行的更新操作保留多少数据块空间。当某个数据块使PCTFREE装满时,ORACLE从相应段的可用清单中删除该块。如果你预计只有很少的更新操作会增加行的大小,则可将PCTFREE设置为较低的值(如5或者10),使得ORACLE填满每个块的更多的空间。但是,如果你预计更新操作将会经常增加行的大小,则将PCTFREE设置为较高的值(如20或30),使得ORACLE为已有行的更新操作保留更多的块空间;否则,将出现行链。

可使用PCTUSED参数设置最小块的阈值来控制一个数据块应在何时放回到相应段的可用清单中。例如,所有段的缺省PCTUSED设置为40%,因此,当事务处理删除数据块中的行时,如果它只有39%是装满的,ORACLE将该数据块放回到相应段的可用清单中。如果你预计很少有删除操作,则可设置PCTUSED为较高的值(如60),当偶然的删除操作发生时,使数据块弹出可用清单。但是,如果你预计将PCTUSED 设置为较低的值(如40),使ORACLE不常产生块在表的可用空间中移进或移出的开销。

可使用INITRANS和MAXTRANS参数优化ORACLE如何在表、数据簇或索引的数据块中分配事务处理项。INITRANS参数确定为事务处理项预分配多少数据块头部的空间。当您预计有许多并发事务处理要涉及某个块时,可为相关的事务处理项预分配更多的空间,以避免动态分配该空间的开销。MAXTRANS参数限制并行使用某个数据块的事务处理的数量。当您预计有许多事务处理将并行访问某个小表时,则当创建表时,应设置该表的事务处理项预分配更多的块空间,较高的MAXTRANS 参数值允许许多事务处理并行访问该表INITRANS和MAXTRANS 参数的设置可能相应低一些(如分别为2和5)。使用这样的设置,很少为事务处理项保留窨,使该表数据块的更多空间用于数据。

可使用STORAGE子句的FREELIST GROUPS 参数控制段的可用清单组的数据量。使用FREELISTS 参数设置每组中可用清单的数量。

 

Oracle 空闲列表管理机制与pctfree和pctused参数 
Oracle中有空闲列表的概念.空闲列表中存储的是可供插入新行的块信息
所以新的行数据只会插入到那些存在于空闲列表中的块. 
空闲列表的管理机制与建表时pctfree和pctused参数两个参数有紧密关系. 
当一个块第一次开辟的时候,当然是在空闲列表中的.
随着不断地插入行数据,当使用率达到或者超过 1-PCTFREE%的时候,该块从空闲列表中移出.
所以这时候新的行数据不可能再存放到该块中. 那这个剩余的PCTFREE%部分岂不是浪费了,当然不是了. 
随着UPDATE 活动的增多,某些存在该块中的行数据的就会变大,变大部分的数据就存放在PCTFREE部分中.

Delete活动,会将行数据从块中抹去,这时候块的使用率可能会低于1-pctfree%, 但是该块还是不会
立即回到空闲列表,也就是该块这时候不会接受新的行数据. 那什么时候该块会重新回到空闲列表中呢?
直到该块的使用率低于PCTUSED%的时候,才会回到空闲列表中,也就是说这时候可以接受新的行数据了.

所以当你的系统有较多的update活动并且行数据的大小变化较大的时候,应该预留较多的pctfree.
例如一个公文审批系统,一个公文在流转的过程中,数据在不断地变大。
对于一个没有update活动的表,可以将其设置为0.如系统中的组织架构表,更新的可能性几乎为0。

如果你想充分地利用块,则将PCTUsed 设置地高一点,以便在发生Delete活动后,快速地回到空闲列表中.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25964700/viewspace-700306/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
DBA

注册时间:2011-06-20

  • 博文量
    53
  • 访问量
    310883