Fragmentation3-表碎片

碎片(Fragmentation)--解析
Fragmentation write by Jonathan Lewis Translated By me
Fragmentation3:
这是第三部分,将涵盖表碎片:
1,介绍
2,磁盘和表空间碎片
3,表碎片
4,索引碎片


3.表碎片"fragmentation"
在第一部分我们讨论了一种表的碎片(通常不是有影响的)-一张表被划分成很多的区(extents).一个很有意思的见解-ASSM(automatic segment space management)
引入了另一种表碎片(通常没有影响).
当一个进程要插入新数据,它检查一个对象的空闲空间的bitmaps发现没有足够的空闲空间,它将腾出足够的空间通过格式化当前extent中的16个blocks(如果有必要,
分配新的extent).这个16个blocks可能在这个extent中的任何位置(受限与这个事实:the starting point within the extent has to be based on multiples of 16
(不太好表达)),chunk的位置,比如初始选择去用的块,是被进程的pid所规定。这意味着你可以在一个表空间创建一个表使用1MB的统一分配的extent,你发现你插入
的第一行格式化了这个extent中的最近的16个块,插入的这行将进入这个extent中最近的block。这个并不是真正的影响非常大,因为(a)大多数的I/O访问都是通过
block而不是tablescan,所以在extent中的为之并不真正影响什么。(b)这种比较混乱的情况一般仅仅被此表中的最后一个extent所限制。(c)如果你是正在做tablescans,
oracle有一种机制依赖于使用"LHWM"(LOW HIGH WATER MARK)和HHWN(HIGH HIGH WATER MARK),最小化查看那16个block chunks需要被特殊对待所带来的负荷。
最普遍和最有意义的表碎片在于表数据可以被delete,我们可能担心"sparsely populated blocks".当你创建一张表,你指定了每个块预留多少空间为以后的update(显式的
在基于freelist或者隐式的基于ASSM)和多少空间空间这个块应该表被考虑作为可以insert的块的候选者。
如果使用ASSM,20%的空闲空间将不能被重用,因为ASSM要求一个block从‘full'到有空闲块,至少要25%的空闲空间。如果使用freelist space管理,freespace可能
有一个预先的设置,设置pctused比80稍高作为表storage参数。pctused为80,如果free space达到20%,block将返回到freelist列表。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值