rebuild与rebuild online效率比对

在停机时间清理分区表分区后,重建索引。以下是三次重建索引的操作记录。
12:28:26 sys@DAVID>alter index DW0.IDX_DAVID_RESEQ rebuild ;

Index altered.

Elapsed: 00:23:36.16

Elapsed: 00:29:09.62
13:51:35 sys@DAVID>alter index DW0.IDX_DAVID_RESEQ rebuild  online ;

Index altered.

Elapsed: 01:15:23.79
15:11:19 sys@DAVID>alter index DW0.IDX_DAVID_RESEQ rebuild parallel 5;

Index altered.

Elapsed: 00:07:54.67


可以看到rebuild效率明显高于rebuild online,我们来看看其执行计划。


Rebuild:

Plan hash value: 3167759897

-------------------------------------------------------------------------------------------------
| Id  | Operation              | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------
|   0 | ALTER INDEX STATEMENT  |                        |    10M|    51M| 48518   (2)| 00:09:43 |
|   1 |  INDEX BUILD NON UNIQUE| IDX_DAVID_RESEQ |       |       |            |          |
|   2 |   SORT CREATE INDEX    |                        |    10M|    51M|            |          |
|   3 |    INDEX FAST FULL SCAN| IDX_DAVID_RESEQ |       |       |            |          |
-------------------------------------------------------------------------------------------------

Rebuild online
Plan hash value: 2561495399

-----------------------------------------------------------------------------------------------------------------
| Id  | Operation              | Name                   | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------------
|   0 | ALTER INDEX STATEMENT  |                        |    10M|    51M| 48518   (2)| 00:09:43 |       |       |
|   1 |  INDEX BUILD NON UNIQUE| IDX_DAVID_RESEQ |       |       |            |          |       |       |
|   2 |   SORT CREATE INDEX    |                        |    10M|    51M|            |          |       |       |
|   3 |    PARTITION RANGE ALL |                        |    10M|    51M| 48518   (2)| 00:09:43 |     1 |   283 |
|   4 |     PARTITION HASH ALL |                        |    10M|    51M| 48518   (2)| 00:09:43 |     1 |     1 |
|   5 |      TABLE ACCESS FULL | PAYMENTORDER           |    10M|    51M| 48518   (2)| 00:09:43 |     1 |   283 |
-----------------------------------------------------------------------------------------------------------------


首先,rebuild 和rebuild online的操作方式是不同的,rebuild只会扫描原索引,而rebuild online需要全表扫描。
其实这个是很好理解的。Rebuild时会阻塞dml,所以,原索引是不会变化的,只需要早原索引的基础上重建即可,索引rebuild的效率要高的多。

我们还看到第一个rebuild的时间虽然比rebuild online的时间短的多,但是比最后一次rebuild要长的多。
这是因为第一个rebuild也需要全表扫描,这是因为,清理分区后,索引变得不可用,所以不能在原索引上重建。

那既然都是全表扫描重建索引,第一个rebuild和rebuild online有什么区别吗?

一、rebuild 会阻塞dml语句而rebuild online则不会。
二、rebuild online时系统会产生一个SYS_XXX_xxx的IOT类型的系统临时日志表,所有rebuild online时索引的变化都记录在这个表中,当新的索引创建完成后,把这个表的记录维护到新的索引中去,然后drop掉旧的索引,rebuild online就完成了,这些临时segment都可以在rebuild在数据库中可以看到,

所以它们虽然执行计划是一致的,但其实其操作方式是完全不同的。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29033984/viewspace-775913/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29033984/viewspace-775913/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值