index rebuild和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就完成了,类似于物化视图。

时间: 2024-10-10 06:55:54

index rebuild和rebuild online的区别的相关文章

Index Reorganize 和 Rebuild 的区别

对Index 进行 Reorganize 和 Rebuild 是有区别的. 1,语义区别 Rebuild 是重新创建,将Index之前占用的空间释放,重新申请空间来创建index.Rebuilding an index means that a whole new set of pages is allocated for it. Reorganize 是重新组织,作用于 index leaf level pages.Reorganizing an index compacts the leaf

聊聊索引Index Rebuild和Rebuild Online(上)

转载至:http://blog.itpub.net/17203031/viewspace-1471924/ 在Oracle运维领域,两个围绕索引的概念一直在网络上被讨论,一个是Index定期重构的必要性,另一个对Rebuild和Rebuild Online的讨论.前者很多前辈在各种场合,包括Oracle MOS,都有了比较深刻的讨论. 对后者的讨论主要是集中两个方面,即: ü  对于大数据.高可用性的系统,索引rebuild动作一定要慎用,最好选择在DML操作比较少的时间窗进行,避免影响业务系统

MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?

一.介绍一下索引的类型 Mysql常见索引有:主键索引.唯一索引.普通索引.全文索引.组合索引PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) UNIQUE(唯一索引) ALTER TABLE `table_name` ADD UNIQUE (`column`)INDEX(普通索引)      ALTER TABLE `table_name` ADD INDEX index_name ( `column

Oracle alter index rebuild 与 ORA-08104 说明

一. 官网说明 在MOS 上的一篇文章讲到了rebuild online 和offline的区别: Index Rebuild Is Hanging Or Taking Too Long [ID 272762.1] Symptoms:=========       Performance  issues while rebuilding very large indexes. The offline rebuilds of  their index is relatively quick -fi

索引 Reorganize 和 Rebuild 的区别

在SQL Server中,Index是BTree(balance tree)结构,每个Page之间都有双向指针链接在一起.Index是在table结构之外,独立存在的存储结构.Index能使查询性能带来飞跃的主要原因是:Index 结构更小,能够更快加载到内存:Index ey物理顺序和逻辑一致,数据的预读取能够提高数据的加载速度,SQL Server 每次读取操作都会将物理物理相邻的多个Page一起加载到内存. BTree结构决定 Index 的叶子节点,从左到右使依次增大,如图是Index的

ORACLE中index的rebuild(转)

Oracle里大量删除记录后,表和索引里占用的数据块空间并没有释放. table move可以释放已删除记录表占用的数据块空间,整理碎片.如果将表格用move方式整理碎片后,索引将失效,这时需要将索引重建. 重建索引可以释放已删除记录索引占用的数据块空间.重建索引不仅能增加索引表空间空闲空间大小,还能够提高查询性能. Sql代码   --table move alter table tbl move; --rebuild索引 alter index idx_tbl_col rebuild; al

Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)

上一节我们讨论了 snapshot,snapshot 的一个重要作用是对 instance 做备份. 如果 instance 损坏了,可以通过 snapshot 恢复,这个恢复的操作就是 Rebuild. Rebuild 会用 snapshot 替换 instance 当前的镜像文件,同时保持 instance 的其他诸如网络,资源分配属性不变. 下面是 rebuild instance 的流程图 向 nova-api 发送请求 nova-api 发送消息 nova-compute 执行操作 下

Index的填充属性:FillFactor 和 PAD_INDEX

在Create Index时,必须慎重考虑属性FillFactor 和 PAD_INDEX的设置,这两个属性只在create index 或 rebuild index时起作用,表示Index page(Leaf-Level 或 intermediate-Level)的填充程度.如果设置FillFactor=90,那么SQL Server 在create index 或 rebuild index时,不是将Index Page的空间全部用完,而是只使用接近90%的Page空间,预留10%的空闲空

Maintenance Plan Usage3:Task Usage (Maintain Index)

Maintenance Plan用于维护Index Fragmentation 和 Statistics的Task 共有三个,后台是使用相应的TSQL来进行data维护. Reorganize Index Task Move index pages into a more efficient search order. This task uses the ALTER INDEX REORGANIZE statement with SQL Server 2012 databases. Rebui