码迷,mamicode.com
首页 > 其他好文 > 详细

index rebuild和rebuild online的区别

时间:2014-09-01 15:35:33      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   io   strong   数据   sp   on   line   c   size   

       曾经看到过淘宝的这个面试题:在一个24*7的应用上,需要把一个访问量很大的1000万以上数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句。

       先online建索引添加约束,然后删除原理的索引。

       create index idx_test_abc on w_1 (a,b,c) online ;
       alter table test add constraint uni1 unique (a,b,c) novalidate; 
       drop index ;

       为什么要用online呢?原理是什么?

       1. rebuild 会阻塞dml语句而rebuild online则不会。

       2. rebuild online时系统会产生一个SYS_JOURNAL_xxx的IOT类型的系统临时日志表,所有rebuild online时索引的变化都记录在这个表中,当新的索引创建完成后,把这个表的记录维护到新的索引中去,然后drop掉旧的索引,rebuild online就完成了,类似于物化视图。

index rebuild和rebuild online的区别

标签:style   io   strong   数据   sp   on   line   c   size   

原文地址:http://blog.csdn.net/stevendbaguo/article/details/8676990

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!