Oracle8i 与Oracle9i 中对pctused 和pctfree, pctincrease 的理解

以下是对pctused 和pctfree 的一些理解和问题 ,不对之处望指正 。


1. pctused 和pctfree 是数据库表的参数 ,pctused 设定表每个数据库块的最低使用空间比率 (默认为40, 即40%) , pctfree 设置表中每个数据库块所要保留的剩余空间的比例,用于日后资料更新之用,默认的值为10,即10% 。




2. pctused 和pctfree 的理解: 当一个表中的数据块从开始用到使用30%,这时候没有达到最低空间使用比率,这个数据块在数据插入时,仍然是可以存储数据的一块空间,也就是说还可以插入 ( 当然这个时候其他还没有被使用的数据块也可以用于插入这笔数据,不知道Oracle是按照什么原理来区分将这笔数据插入那块已经使用30%的数据块还是插入还没有被使用的那个数据块 ? ) 。


3. 当这个数据块利用到40% 的时候,仍然可以插入数据,假设现在插入数据到了80% 块空间大小,这时也可以插入数据,因为还没有达到90% 限制点,但是如果现在我们从80%的数据中删除掉一些数据(比较小量), 利用率变为50% , 由于我们删除的数据行可能是相互离散的,那么oracle不能释放这部分 ( 80% - 50% = 30% ) 空间,那么现在的空间利用为50%,30% 不能再利用,那么再使用10% 就达到了90%限制点 。 一个数块中就可能有30% 的空间被浪费,如果日后永远不会更新, 那么浪费的空间就是30%+10% = 40% 的数据块空间 。

------- 当没有达到pctfree的值时,如果删除了数据,这些空间仍然可以继续使用。只有达到或者超过pctfree的值,pctused才会起作用,这时delete操作释放的空间不会再被insert使用。 也就是說要低过pctused以后,block才会重新被列入到freelist,才会用来insert新的行; 9i中segment mangement 为auto时,pctused已经不起作用了。

4. pctfree 设置问题: 对于经常更新的表,需要设置较大的pctfree, 防止出现链接行,也就是跨块存储的行,10是默认值,据我们的实际观察,对于经常更新的表,10 基本上是不够的 ( 当然这要看存储的行中各列大小是否会变 ), 如果不同时间插入或更新的列大小变化比较大,比如一行数据 其中一列名为 “备注“, 经常被更新,有时候从空update 到 500 bytes甚至更大,这样就比较容易发生chained row 。 但是设置的太大感觉浪费比较大,比如pctfree=30% ,那么这30% 就铁定不能被使用( 如果日后不对它update的话 ),不知道如何找到平衡点 ?

-------根据应用的不同,区分经常更新的表和数据比较稳定的表。根据表更新的程度和表中的字段类型(如非空的char类型的更新不会发生变化)对于不好估计的表,你可以根据表的数据量的大小去评估——存储空间的占有和效率那个更加重要一些。



5. pctincrease 仅仅是针对tablespace 而言的,具体的理解
http://www.itpub.net/showthread.php...15&pagenumber=1 讨论的比较清楚 。

----- pctincrease不只是针对表空间的,一样可以对表进行设置。不过一般来说,对表设置为0。目前我还没有发现对表设置为非0值有任何好处。

6. Oracle9i 中用local manager好像不再需要 pctincrease 这个参数了,但是还是可以设置 。
Oracle9i 文档中看到的:
The storage parameters NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS, and DEFAULT STORAGE are not valid for extents that are managed locally 。 默认值的应该和oracle8i 中一样 。

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

转载于:http://blog.itpub.net/35489/viewspace-84676/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值