线上频繁DML的大表如何创建索引?

dml过程中会产生锁,先了解下锁的模式:

 0:none  
1:null 空  
2:Row-S 行共享(RS):共享表锁  
3:Row-X 行专用(RX):用于行的修改  
4:Share 共享锁(S):阻止其他DML操作  
5:S/Row-X 共享行专用(SRX):阻止其他事务操作  
6:exclusive 专用(X):独立访问使用 

如果使用非online,会阻塞表上的DML交易,造成长时间的交易超时。

使用online,会等待dml的锁释放之后,在创建,会加上创建时间。

总结:

1. 非online方式创建索引,不能存在正在执行的DML,否则create index就会抛出ORA-00054。如果非online创建索引过程中,有正在执行的DML,则这些操作会hang,直到create index执行完成。换句话说,对于频繁DML的表,因为并发操作,有可能一直无法创建索引,也有可能创建索引的过程中,影响其他DML操作。

2. online方式创建的索引,如果存在正在执行的DML,会一直等待,直到所有DML完成。如果使用online创建索引过程中,有正在执行的DML,则不会影响。

3. 对于非online,创建索引过程中,会阻碍其他的DML,对于online,创建过程中,不会阻碍其他DML。

4. 相对来说,online比非online对现有DML的影响较小,但是二者,都存在无法创建的可能。

5. 针对无法创建的可能,一种方法,就是暂停业务,暂停所有DML操作,这样可以顺利地创建完成,此时选择非online,相比使用online,可以更快创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值