|
|
Re: Re: 参考下面的文章,讲的特别好
最初由 Fenng 发布
[B]
你这话我可不赞同,回收到master freelist 上的是process Freelist数变小后的包含在删除的Freelist中的块.Freelist浪费空间的问题不是微乎其微,还有不小.
我看到这样的话,希望不是以偏概全,
From 8.1.6 onwards, it is possible to dynamically add and remove process freelists. When the number of freelists is decreased,the blocks contained on the removed freelist are merged into the master freelist of the segment header or corresponding freelist group. When a new freelist is added, there are initially no blocks associated with it. The number
of freelists you decide to create is normally recommended to be close to the maximum number of concurrent inserts occurring on the segment. [/B]
我还是不赞同你的观点

你引述的这段文字并不能说明任何问题
你这文字只是说明 alter table t storage(freelist n )这样的时候
如果是减少,则可回收
增加,则开始不挂block
这个在 dump block的测试中很明显
但这不能说明浪费多少空间
每个freelist通常不会多与5个block
关键的问题是每个process freelist上可能挂多少块?假如不出现 死块 的话,通常不应该超过5块,这个浪费大么?
transection delete释放的空间先是放在 TX freelist中,这是根据事务动态产生的,当事务结束后,这些空间会被回收到 master freelist,然后某个事务需要块的时候先搜索 TX,然后是process,最后是master
所以只是同一个进程不能使用两个process freelist
但事实上,由于master 的存在,而使得空间的浪费问题几乎可以忽略
这个问题在测试中也体现出来了
今天 dump block做了不少测试
有兴趣你也可以去做  |
|