Oracle 锁的种类

Oracle通过多种锁机制来维护并发性:

Latch:保护chain链。

Lock:保护数据块,数据行。
X 排他锁
S 共享锁

行级锁:当一个DML事务开始时,在行数据头部加上行级别(也叫行标记指向事务槽)。
行级锁,不影响其他会话对其访问,因为可以构造CR块。

事务锁:一个事务只有一个事务锁,因为行级锁而产生的。
一个事务如果有了行级锁,就会有事务锁。

表级锁:
行级排他锁: RX锁
1.当我们进行DML时,会自动在被更新的表上添加RX锁,也可以执行lock命令显式的在表上添加RX锁
2.允许其他事务通过DML语句修改相同表里的其他数据行。
3.允许使用lock命令对表添加RX锁定。
4.不允许其他事务对表添加X锁(删除表)。
行级共享锁: RS锁
Select … from for update
以DML的形式读 行级锁,事务锁正常加,但是在表级别上RS锁
共享锁:S锁
排他锁:X锁
通过lock table in exclusive mode命令添加X锁。(删除表)
共享行级排他锁

例如:当删除一个表时,Oracle要确保这个表中所有的事务都提交了。
如果Oracle读取这个表的每一行数据,来判断是否有行级锁,效率会极低。
Oracle仅会读取表级锁RX,如果存在RX锁,那么代表该表中正在有事务进行,无法删除表,因为删除表需要给表加表级排他锁X,X与RX互斥。

RX锁的兼容:
一个表上可以存在多个RX
A事务修改一个表的行数据,产生相对应的行级锁,自己的事务锁,也需要在表上加上表级锁 RX。
B事务修改该表的其他行数据,产生相对应的行级锁,自己的事务锁,以及表级锁RX。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值