关于PCTUSED的问题

[复制链接]
查看11 | 回复7 | 2008-8-27 16:10:17 | 显示全部楼层 |阅读模式
书上说当ORACLE的BLOCK的已用空间低于PCTUSED时,该块将被放回FREELIST中,但是有一点我不能理解,尽管BLOCK的已用空间低于PCTUSED,但是该块里依然被使用的空间,也就是说该BLOCK中依然存有数据,此时将其放入FREELIST,那么该BLOCK里的数据ORACLE如何作处理?
回复

使用道具 举报

千问 | 2008-8-27 16:10:17 | 显示全部楼层
当然是保留了,
是这样的:
>1-pctfree 不再添加新的数据,保留的部分留作update时使用。这时block从freelist中移除。而这个block在删除/更新导致后剩下的数据1-pctfree 不再添加新的数据,保留的部分留作update时使用。这时block从freelist中移除。而这个block在删除/更新导致后剩下的数据<pctused后,重新将block加入到freelist中,此时又可以将数据添加到这个块中了。 [/B]
是不是标识着这个Block有能力再添加数据,而添加数据是否成功由要添加的数据的大小决定。
回复

使用道具 举报

千问 | 2008-8-27 16:10:17 | 显示全部楼层
最初由 mis_wub 发布
[B]
是不是标识着这个Block有能力再添加数据,而添加数据是否成功由要添加的数据的大小决定。 [/B]

是的
回复

使用道具 举报

千问 | 2008-8-27 16:10:17 | 显示全部楼层
当一个BLOCK的空间使用率低于PCTUSED是即将该BLOCK放入FREELIST,但是此时该块的空间使用仅仅是低于PCTUSERD,也就是表明该BLOCK肯定还有数据在里面,我的意思说ORACLE如何处理该BLOCK中低于PCTUSED的那些数据?
回复

使用道具 举报

千问 | 2008-8-27 16:10:17 | 显示全部楼层
最初由 bigbombgj 发布
[B]当一个BLOCK的空间使用率低于PCTUSED是即将该BLOCK放入FREELIST,但是此时该块的空间使用仅仅是低于PCTUSERD,也就是表明该BLOCK肯定还有数据在里面,我的意思说ORACLE如何处理该BLOCK中低于PCTUSED的那些数据? [/B]

这些数据还是放在这个block中啊。
一个block放到freelist中,不影响现有的数据啊。
回复

使用道具 举报

千问 | 2008-8-27 16:10:17 | 显示全部楼层
楼主钻牛角尖里去了;)
放到freelist去,并不是清空里面的所有数据,只是说明这个数据块可以再添加一些新的数据。
回复

使用道具 举报

千问 | 2008-8-27 16:10:17 | 显示全部楼层
我起初以为低于PCTUSED的BLOCK放入FREELIST中之前,ORACLE会将该BLOCK中低于PCTUSED的数据移到其他BLOCK以使该BLOCK完全清空,看来是我理解错了。我起初还以为FREELIST属于DATABASE,那么看来应该在每个Segment中都应该有一个FREELIST,不知我的理解对不对,但是我不能确定的是FREELIST位于Segment中还是EXTENTS中?还请DX们指点。
回复

使用道具 举报

千问 | 2008-8-27 16:10:17 | 显示全部楼层
freelist在segment的第一个extent中
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行