oracle与mySQL的ddl差异_Oracle 11.2.0.3和MySQL5.6 DDL比较

1、CREATE INDEX,DROP INDEX

2、ADD COLUMN,DROP COLUMN

MySQL 5.6后大大增强了ONLINE DDL功能,典型就是上面的2个方面, 首先ADD COLUMN和DROP COLUMN不再会堵塞DML操作,同时建立索引 方面默认使用LOCK=NONE的模式而不会堵塞DML,LOCK有4个模式 默认NONE,可选SHARED和exclusive以及DEFAULT, 在LOCK=NONE模式下这种情况和Oracle的CREATE INDEX ONLINE极为相似,在5.6.19上测试就连如果CREATE INDEX LOCK=NONE的时候有一个事物没有提交或者正在进行,也是不能建立索引的,ORACLE也是一样的,换句话说ORACLE和MYSQL都会在建立索引初期试图或者一个X独占的锁,一旦获取后立即降级,但是MYSQL的这个等待过程会堵塞SELECT,我们知道ORACLE里面任何情况下是不会堵塞SELECT的。下面分别说明;

1、CREATE INDEX (在线) 在有事物没有提交的情况下

ORACLE 11.2.0.3测试CREATE INDEX ONLINE

首先在表中插入一条数据,不要提交

insert into testti select * from testti where rownum<=1;

然后另外开启一个会话进行

create index test_in on testti(username) online;

此时CREATE INDEX 被堵塞,查看V$LOCK

SID TYPE      LMODE    REQUEST      BLOCK

---------- ---- ---------- ---------- ----------

48 TX            0          4          0

48 TM            2          0          0

48 TM            4          0          0

48 TX            6          0          0

53 TM            3          0          0

53 TX            6          0          1

可以看到SID 53堵塞了SID 48,SID 48试图获取MODE 4的锁的时候被一个MODE 6的TX锁堵塞

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值