当前位置:   article > 正文

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

oracle online 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锁堵塞

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/838717
推荐阅读
相关标签
  

闽ICP备14008679号