存储参数释疑:PCTUSED,PCTFREE,FREELIST

[复制链接]
查看11 | 回复9 | 2010-5-13 09:34:23 | 显示全部楼层 |阅读模式
这两天整个翻了一下ITPUB上的贴子,其中引出了一些问题,也是自已一直疑惑的。。。
关于存储参数:PCTUSED,PCTFREE,FREELIST 其中PCTUSED,BIT兄有一段:
( 按照你的意思:
假设pctfree 10 , pctused 40
使用到了90了
然后删除了60%
这时只实际使用了30%
因为一般情况下,delete后留出来的空间是不能自动重新利用的
我觉得pctused的作用是:
按照上面的例子,如果删除的在50%以内
由于实际使用值没有低于40%
则重新insert的时候该块不会成为一种选择
如删除量使得实际使用的低于了40%
则该块成了insert的时候的一种选择)
1、我的疑惑和BITI差不多,假如将表的PCTUSED设为默认的40%,某个新块被INSERT一些记录后,这时块实际占用20%,因为它低于40%,所以它继续位于自由表中,可用来重用。然后它被再次INSERT一些记录,当插入某条记录结束后,块占用超过了40%,例如到了41%,这时,如果再有一条记录来插入时,因为已超过设定的40%,这个块已不是自由块,ORACLE将在自由列表中寻找低于40%的一个块来写入记录。所以我的疑问是,块的利用率根本到不了50%或更高,这样这个块如果没有发生DELETE操作将利用率降下去的话岂不造成空间的大大浪费?我想我的理解不对,BITI有新的解释吗?
2、PCTFREE好理解一些,不过我的一个设想是如果某个表的单记录很大时,如果此表的PCTFREE太小时(假如我认为默认的10%都是不合适的),那就很可能产生行链接了,但这个PCTFREE设成多大才合适?这个有简单的经验值吗或者计算公式也行。
3、FREELIST的作用:这个参数似乎我们平时讨论的少了些,但我认为在考虑数据库的并发度时是不是要重点考虑一下这个值的设定,如一个多客户端并发写入记录的应用,要求并发性能极高,这时是否要考虑一下将相关表的FREELIST调高些?
待BITI等诸兄弟来讨论发表一下见解。


回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
最初由 j2wk 发布
[B]
1、我的疑惑和BITI差不多,假如将表的PCTUSED设为默认的40%,某个新块被INSERT一些记录后,这时块实际占用20%,因为它低于40%,所以它继续位于自由表中,可用来重用。然后它被再次INSERT一些记录,当插入某条记录结束后,块占用超过了40%,例如到了41%,这时,如果再有一条记录来插入时,因为已超过设定的40%,这个块已不是自由块,ORACLE将在自由列表中寻找低于40%的一个块来写入记录。所以我的疑问是,块的利用率根本到不了50%或更高,这样这个块如果没有发生DELETE操作将利用率降下去的话岂不造成空间的大大浪费?我想我的理解不对,BITI有新的解释吗?

[/B]


你这个理解错了
你可以看看OCP文档上那张图,一目了然了.
当使用一个block时,在达到pctfree之前,该block是一直可以被插入的
这个时候处在上升沿
pctused在下降沿起作用
回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
最初由 j2wk 发布
[B]
2、PCTFREE好理解一些,不过我的一个设想是如果某个表的单记录很大时,如果此表的PCTFREE太小时(假如我认为默认的10%都是不合适的),那就很可能产生行链接了,但这个PCTFREE设成多大才合适?这个有简单的经验值吗或者计算公式也行。

如果行长过大,通产行链接是不可避免的,当然你可以增大block_size
减小pctfree(你要考虑更新)
关于pctfree设置,ocp教材上有建议,你可以参考:
PCTFREE
缺省为 10
如果没有 UPDATE 活动,为0
PCTFREE = 100 x upd / (Average Row Length)

3、FREELIST的作用:这个参数似乎我们平时讨论的少了些,但我认为在考虑数据库的并发度时是不是要重点考虑一下这个值的设定,如一个多客户端并发写入记录的应用,要求并发性能极高,这时是否要考虑一下将相关表的FREELIST调高些?

对于并发访问频繁的数据表,应该设置稍大的freelists,这个讨论的不少了.在9i里,可以使用ASSM了.

待BITI等诸兄弟来讨论发表一下见解。

[/B]

回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
最初由 eygle 发布
[B] [/B]

1、又仔细看了一下OCP上的这一段说明,呵呵,原来概念上的一个错误一直扭不过来,这下就明白了。谢过。
2、PCTFREE这个问题看来还是得看实际应用情况了。
3、看了一些原来的贴子,这个参数的设置看来也是有利有弊,要么时间换空间,要么空间换时间。只能看应用的需要和硬件情况平衡一下了。
回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
pctfree 10%
pctused 40%
1:
当一个新的数据块被使用时,插入的数据量达到了 70%, 过了几天后,我们又向表中插入数据,此时的数据块能否可以被使用真到90%呢?
回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
最初由 rich_ying 发布
[B]pctfree 10%
pctused 40%
1:
当一个新的数据块被使用时,插入的数据量达到了 70%, 过了几天后,我们又向表中插入数据,此时的数据块能否可以被使用真到90%呢? [/B]

为什么不可以呢?
回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
PCTFREE 10%
数据块当然可以使用到90%
一般经常修改的表建议使用大一点的PCTFREE参数。
回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
这个 ocp 教材和文档 都蛮清楚的
回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
转一个文章,比较形象 :)

要形容一個 BLOCK 的咦鳎?覀兛梢园岩粋
回复

使用道具 举报

千问 | 2010-5-13 09:34:23 | 显示全部楼层
[QUOTE]最初由 AmorousPoem 发布
[B]转一个文章,比较形象 :)

要形容一個 BLOCK 的咦鳎?覀兛梢园岩粋
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行