index rebuild和rebuild online的区别
程序员文章站
2022-04-30 15:03:11
...
rebuild online时系统会产生一个SYS_JOURNAL_xxx的IOT类型的系统临时日志表,所有rebuild online时索引的变化都记录在这个表中,
曾经看到过淘宝的这个面试题:在一个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就完成了,类似于物化视图。
推荐阅读
-
查询SQL Server Index上次Rebuild时间的方法
-
Mysql中key和index的区别点整理
-
pandas中groupby函数中参数ax_index和group_keys的区别
-
SQL2005重新生成索引的的存储过程 sp_rebuild_index 原创
-
SQL2005重新生成索引的的存储过程 sp_rebuild_index 原创
-
JS使用xxx.index=0和xxx.setAttribute(‘index’,0)这两种设置自定义属性的区别?
-
css之Display、Visibility、Opacity、rgba和z-index: -1的区别
-
css中z-index: 0和z-index: auto的区别
-
关于索引的create offline、online和rebuild offline、online创
-
MySQL索引的Index method中btree和hash的区别_MySQL