索引的rebuild和rebuild online的区别

来源:互联网 发布:淘宝亲宝贝入驻条件 编辑:程序博客网 时间:2024/05/16 13:02

索引的rebuild和rebuild online的区别

128人阅读 评论(0)收藏 举报
tablebuildsqlaccess

create table t1 as select * From emp;
insert into t1 select * from t1;
create index i_empno on t1(empno);
create index i_deptno on t1(deptno);

@?\rdbms\admin\utlxplan

SQL> explain plan for alter index i_empno rebuild;

已解释。

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
Plan hash value: 1909342220

----------------------------------------------------------------------------------
| Id  | Operation              | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | ALTER INDEX STATEMENT  |         |   991K|    12M|  3302   (1)| 00:00:40 |
|   1 |  INDEX BUILD NON UNIQUE| I_EMPNO |       |       |            |          |
|   2 |   SORT CREATE INDEX    |         |   991K|    12M|            |          |
|   3 |    INDEX FAST FULL SCAN| I_EMPNO |       |       |            |          |
----------------------------------------------------------------------------------

已选择10行。

SQL> explain plan for alter index i_empno rebuild online;

已解释。

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
Plan hash value: 1499455000

----------------------------------------------------------------------------------
| Id  | Operation              | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | ALTER INDEX STATEMENT  |         |   991K|    12M|  3302   (1)| 00:00:40 |
|   1 |  INDEX BUILD NON UNIQUE| I_EMPNO |       |       |            |          |
|   2 |   SORT CREATE INDEX    |         |   991K|    12M|            |          |
|   3 |    TABLE ACCESS FULL   | T1      |   991K|    12M|  3302   (1)| 00:00:40 |
----------------------------------------------------------------------------------

已选择10行。


可见rebuild 和rebuild online的扫描方式不同,但都会发生sort

在rebuild online 时会报错
 
ORA-08120: Need to create SYS.IND_ONLINE$ table in order to (re)build index
解决方法就是运行catcio.sql 创建SYS.IND_ONLINE$表

除了扫描方式不同外,rebuild 会阻塞dml语句而rebuild online则不会。
 
rebuild online时系统会产生一个sys.ind_online$的IOT类型的系统临时日志表,所有rebuild online时索引的变化都记录在这个表中,当新的索引创建完成后,把这个表的记录维护到新的索引中去,然后drop掉旧的索引,rebuild online就完成了

他们的区别主要就在于是否阻塞DML操作和扫描数据的不同。由于REBUILD的时候为了维护索引本身,会阻塞DML操作,在DML操作频繁的OLTP系统中经常用rebuild online会比较合适

参考了http://www.bitscn.com/pdb/oracle/200701/88705.html

from :http://blog.csdn.net/wll_1017/article/details/7656047

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米4s屏幕显示黑屏怎么办 平板拨号键没了怎么办 华为手机拨号图标没了怎么办 华为荣耀手机进水了怎么办 华为畅享7黑屏怎么办 华为畅玩7x黑屏怎么办 华为手机打电话时黑屏怎么办 三星a8手机黑屏打不开怎么办 华为手机恢复出厂后黑屏怎么办 华为荣耀4c白屏怎么办 华为荣耀6手机信号不好怎么办 华为荣耀8手机音量小怎么办 无法激活触控id怎么办 魅蓝2卡顿怎么办 小米max2玩王者荣耀卡怎么办 小米4玩王者荣耀卡怎么办 华为荣耀7i卡顿怎么办 华为荣耀7卡的怎么办 荣耀8手机有孤独怎么办 红米note4玩游戏卡怎么办 红米note4x玩游戏卡怎么办 华为4c死屏怎么办 华为4c充电很慢怎么办? 华为4c突然死机了怎么办 华为畅玩4c内存不足怎么办 荣耀4c一直亮屏怎么办 华为手机返回键失灵怎么办 荣耀6p死机了怎么办 荣耀6主板烧坏了怎么办 虚拟运营商倒闭了号怎么办 买到二次放号怎么办 新运动鞋鞋穿着有点紧怎么办 一件代发被买家退货后怎么办? 洗了翻毛的鞋子怎么办 猫眼竹芋泡根了怎么办 双线花叶子卷了怎么办 华为云收藏满了怎么办 小米6云空间满了怎么办 华为云存储已满怎么办 苹果云备份空间不足怎么办 oppor9指纹与密码忘记怎么办