rebuild index

原创 2004年10月17日 15:37:00
(digest from It_pub)
rebuild时也会使用临时表空间
ask tom上关于rebuild index 有这么一段话:
If you need to rebuild your indexes, you need 2x the space -- you'll have the old and the new index for a period of time. If you do it online, you'll need additional space to hold the changes that are made during the rebuild as well

2×的空间是当前index所在的tablespace中使用空间

以前有人问过类似的问题

rebuild index为何要排序

我们都知道索引是有序的存储
然而在block内部,实际上索引键值的存储是无序的

比如说,你先存入了1,3
即使以后增加了一个2
那么在同一个数据块内部,数据库也不会去动1,3的存储
在读取的时候,oracle可以作简单的块内排序,进行有序的读取输出

在重建索引的时候
Oracle显然不会按照1,2,3..........的索引顺序来读出索引内容
因其代价高昂

Oracle实际执行的是Fast Full Scan
按顺序读取block

这样读取出来的数据需要重新sort
排序,然后重构索引

这个重构的索引在物理存储上比原来更为有序

这个可以通过block dump观察到

建立索引实际上是排序,大型的排序(只要sort area容纳不下)就要使用临时表空间


我作了两个试验。
我的index大小为7M左右。
首先,我将index所在的tablespace只开到10M,临时表空间较大,
rebuild 时报无法在index所在的tablespace上扩展temp 段。
将表空间增大,rebuild成功。(至少要开到20M)
在将临时表空间只开到5M,表空间开到20M,rebuild就报无法在temp表空间上扩展(这个是因为需要排序,而sort area容不下,所以要利用临时表空间),将临时表空间增大到10M,rebuild成功。


1.索引的存储是,块内无序,块间有序
2.rebuild index时对于索引块的读取也是Fast full scan
3.不是说读索引的代价高,是说顺序读取块内无序的索引的代价高
所以会采用Fast Full Scan方式读取


转alter index rebuild online引发的血案

‘早上起来没有一个人……‘,伸手抓起手机,‘喂,……应用hang住了……rac的一节点在手工shutdown……需要到现场……’。赶紧穿上衣服,拿起电脑往客户办公室赶。路上还接到客户电话具体描述了下故...
  • launch_225
  • launch_225
  • 2012年01月11日 14:28
  • 6675

alter index rebuild 效率分析

原来是table和index建立在同一个tablespace,准备将index单独放在一个tablespace,与table分开。 测试: A: rebuild 时间:3.63 min alte...
  • cunxiyuan108
  • cunxiyuan108
  • 2014年01月03日 16:13
  • 1131

重建索引:ALTER INDEX..REBUILD ONLINE vs ALTER INDEX..REBUILD

什么时候需要重建索引参考自:深入理解重建索引(原创)1、 删除的空间没有重用,导致 索引出现碎片2、 删除大量的表数据后,空间没有重用,导致 索引"虚高"3、索引的 clustering_facto ...
  • pan_tian
  • pan_tian
  • 2015年06月19日 17:55
  • 3372

oracle alter index rebuild online和alter index rebuild的区别

本文用10046事件来解析alter index rebuild与alter index rebuild online的区别 alter index rebuild online实质上是扫描...
  • u011823742
  • u011823742
  • 2014年06月24日 09:16
  • 1254

rebuild index 的机制

alter index ... rebuild online的机制当我们对索引进行rebuild时,如果不加online选项,oracle则直接读取原索引的数据;当我们添加online选项时,orac...
  • hailang99
  • hailang99
  • 2007年10月16日 11:11
  • 5997

rebuild index方式

今天面试时碰到的一个问题,r
  • u010587433
  • u010587433
  • 2014年07月18日 16:46
  • 1067

index rebuild和rebuild online的区别

1. rebuild 会阻塞dml语句而rebuild online则不会。          2. rebuild online时系统会产生一个SYS_JOURNAL_xxx的IOT类型的系统临时日...
  • guogang83
  • guogang83
  • 2014年09月01日 15:29
  • 1346

alter index index_name rebuild真能释放索引表空间吗?

1楼:  表中的数据每天晚上都要删除一部分(150万条左右),且表上建有主键索引。  当删除掉这些数据后,其所占的索引表空间并没有释放,于是使用了rebuild,  rebuild能释放空间吗?...
  • TechChan
  • TechChan
  • 2011年08月16日 23:19
  • 2646

maven插件入门学习中碰到的问题解决

今天学习应用eclipse的maven插件,碰到了一系列的问题,在这里做个归纳总结: 1. 使用自定义的本地仓库,修改eclipse的classpath中M2_REPO 首先进入%MAVE...
  • jamesge2010
  • jamesge2010
  • 2016年05月13日 15:18
  • 610

Oracle index rebuild online 与 rebuild 及 drop index 后重建

当我们对索引进行 rebuild 时,如果不加online选项,oracle则直接读取原索引的数据; 当我们添加 online 选项时,oracle是直接扫描表中的数据,维护索引段数据的一致性就是从索...
  • bbliutao
  • bbliutao
  • 2012年07月08日 22:26
  • 2954
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:rebuild index
举报原因:
原因补充:

(最多只允许输入30个字)