pctfree和pctused,initrans,maxtrans,next

来源:互联网 发布:王石田朴珺 知乎 编辑:程序博客网 时间:2024/05/20 23:06

pctfree和pctused,initrans,maxtrans,next 环境:oracle 10g,表格处于自动段空间管理的表空间上. 主题:讨论建表的几个参数,和表格以及文件的增长方式. 一)对于倾向于查询的应用系统而言,或者是倾向于查询的表格,那么pctfree设置为1左右,已经足够了,之所以不这只为0, 是为了以防万一,不过对于某些绝对不可能修改的系统而言,设置为0也是可以的。 由于默认的pctfeee是10,所以,如果设置为新值0,或者1,那么可以节省将近10%的空间,而且读盘的速度也会更快一些。例如pctfeee=0,那么原来放在100个extent上的数据,现在只要在90个extent上就可以了. 例如,创建一个很简单的表格: -- Create table create table test_space ( Name varchar2(24) not null ) tablespace CRMII pctfree 0 initrans 2 storage ( initial 64K next 1K minextents 1 maxextents unlimited ); -- Add comments to the columns comment on column test_space.Name is '姓名'; 二)由于oracle建议我们使用extent management local segment space managment auto ,所以,我们以后建立表格的时候,注意pctfree即可。所以对于永久表格而言,pctused基本上可以进入历史舞台了, 因为临时表并没有storage参数部分(虽然我相信,oracle会使用类似的参数管理临时表). 三) 作为一个基本的常识,了解initrans还是很有必要的。IniTrans,用于每个块中处理行级锁事务的初始表是1,索引是2,如果同一块有很多行被并发更新等操作时,建议增加该值对于serializable 隔离级,至少设置为3。但是事实上,不适宜去修改默认的值,因为事务需要在块上面写事务条目信息,这意味着,initrans越大,需要消耗的空间越大,时间也越长。 四)maxtrans ,在老版本上是为了控制最大并发事务,但是新版本已经自动这么处理了,如果需要的话也可以设置,这个参数和pctused一样,基本上是可淘汰的! 总结: 1) pctfree 很重要,但对于查询系统基本上可以设置为0 2) pctused 基本可以淘汰 3) initrans ,很重要,但如果不是特别设置,不要去修改。 4) maxtrans ,至少10g以上不用了,属于淘汰行列。

原创粉丝点击