oracle笔记-锁

在oracle中主要有3类锁

  • DML锁:一般指select,insert,update,merge和delete语句。DML锁机制允许并发执行修改。例如,DML锁可能是特定数据行的锁,或者是锁定表中所有行的锁。

  • DDL锁:如create和alter语句等。DDL锁可以保护对象的结构定义。

  • 内部锁和闩:oracle使用这些锁来保护其内部数据结构。例如,oracle解析一个查询并生成优化的查询计划时,它会把库缓存闩上,将查询计划放在那里,以供其他回话使用。

DML锁

DML锁用于确保一次只有一个会话能修改某一行,而且这时其他会话不能删除这个表。

  • TX锁:事务发起第一个修改时会得到TX锁(事务所)。事务的发起是自动的,TX锁会被一直持有,直至事务执行提交(COMMIT)或回滚(ROLLBACK)。事务中修改或者通过select for update选择的任何行都会“指向”该事务的一个相关TX锁。

  • TM锁:TM锁用于确保在修改表的内容时,表的结构不会发生变化。

DDL锁

在DDL操作过程中会自动为对象加DDL锁,从而保护这个对象不会被其他会话修改。在DDL语句执行期间会一直持有DDL锁。每条DDL语句执行完成之后都会立即提交。如果不想立即提交,可以使用自治事务。DDL锁有以下三类锁:

  • 排他DDL锁(exclusive DDL Lock):防止其他会话得到自己的DDL锁或TM锁。在DDL操作期间可以查询一个表,但是无法以任何方式修改这个表。
  • 共享DDL锁(share DDL lock):保护锁引用的对象的结构,使之不会被其他会话修改,但是可以修改数据。
  • 可中断解析锁。

大多数DDL语句都会带一个排他DDL锁。

闩是轻量级的串行设备,用于协调对共享数据结构、对象和文件的多用户访问。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值