oracle 大数量删除

ORACLE采用的是不完全B+树,就是在删除时不进行再平衡。
就是说,大量修改和删除后,性能会下降,有时会错,必须经常修理索引。
目前采用完全b+树的数据库只有INFORMIX。
他们都担心删除时平衡会影响效率。实际上完全多虑了,INFORMIX按索引删除,比其他数据库快得多。

 

在经过大数据删除后,执行select pk from table where pk < 1亿之类的语句后,即使没有查询到任何数据,执行也是比较的慢, 原因就是没有再平衡, 或者如下解释:产生了索引碎块

 

尽管被删除的索引条目所占用的空间大部分情况下都能够被重用,但仍然存在一些情况可能导致索引空间被浪费,并造成索引数据块很多但是索引条目很少的后果,这时该索引可以认为出现碎片

索引键值持续增加(比如采用sequence生成序列号的键值),同时对索引键值按照顺序连续删除,这时可能导致索引碎片的发生。因为前面我们知道,某个索引块中删除了部分的索引条目,只有当有键值进入该索引块时才能将空间收回。而持续增加的索引键值永远只会向插入排在前面的索引块中,因此这种索引里的空间几乎不能收回,而只有其所含的索引条目全部删除时,该索引块才能被重新利用。  

 

    对于经常大数据删除的时候,最好进行分区,然后不要的数据做整个的truncate.  对于大数据的表超过200w ,不进行分区,本身就是个错误。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值