暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

开始聊聊“锁”-- 5.Oracle DDL锁的概念

InDataBase 2021-04-26
2798

DML锁

在DDL 操作中会自动为对象加DDL 锁(DDL Lock),从而保护这些对象不会被其他会话所修改。

例如,如果执行一个DDL 操作alter table t,表T 上就会加一个排他DDL 锁,以防止其他会话得到这个表的DDL锁和TM锁。


DML释放机制有COMMIT,ROLLBACK,KILL。

DDL默认有个COMMIT操作,也就是DDL语句执行结束后会自动提交。


所以需要注意的是:先执行DML,然后执行DDL语句,DML会被提交

 

DDL锁分为两个类型:DDL专有锁、DDL共享锁,咱们分别介绍一下:

⊙ DDL专有锁

用于阻止别的用户在DDL所引用的对象定义上可能的修改。

DDL专有锁与DDL专用锁、DML锁是冲突的:如你先ALTER TABLE T,就不能执行ALTER TABLE T或DELETE FROM T 。

⊙ DDL共享锁

有些DDL语句会产生DDL共享锁,用于保护对对象定义的变更,可以同时并发执行。

比如同时两个用户在EMP表上创建一个存储过程,分别会在它引用的对象上(EMP)加一个DDL共享锁,

而且用DML修改表的数据也允许,但是不允许EMP上修改表定义。


再来看看DDL专用锁与DDL共享锁


DDL锁相对DML锁要好理解一些,当然其内容远远不止我写的这些。


关于Oracle锁的内容,暂时就到这。

学海无涯,适时而止。


翻翻历史,温故知新

开始聊聊“锁”-- 4.Oracle DML表锁的实验

开始聊聊恶心的“锁”-- 3.Oracle DML表级锁概念

开始聊聊恶心的“锁”-- 2.Oracle DML行级锁概念

开始聊聊恶心的“锁”-- 1.一个故事了解Oracle有哪些锁

死锁与悲观锁、乐观锁不是一类东西

骨灰级科普-Oracle的序列可能不连续

后台翻页必用的rownum,你知道它的处理逻辑吗?

总在面试时被问COUNT(*)、COUNT(1)哪个快?

NVL系与Decode系,他们的差别你了解吗?

骨灰级科普-Oracle中的NULL,神马也不是

SQL也可以不那么简单


文章转载自InDataBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论