Heim >Datenbank >MySQL-Tutorial >indexrebuild和rebuildonline的区别

indexrebuild和rebuildonline的区别

WBOY
WBOYOriginal
2016-06-07 16:01:331218Durchsuche

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

曾经看到过淘宝的这个面试题:在一个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就完成了,类似于物化视图。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn