Oracle 锁的种类
2020-07-14 06:27
120 查看
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。
相关文章推荐
- oracle 触发器的种类和触发事件,DML触发器,DDL事件触发器,替代触发器,查看触发器,
- Oracle优化器三大种类的介绍
- oracle 触发器的种类和触发事件,DML触发器,DDL事件触发器,替代触发器,查看触发器
- Oracle-游标的种类、语法、属性及使用,NO_DATA_FOUND和%NOTFOUND的区别
- oracle SCN 种类
- Oracle 中一些主要的V$视图种类
- 在oracle中临时表的种类
- Oracle之表的种类(heap,partition table,glable temp table,orgination index table,cluster sort hash table)
- "ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA.
- Oracle language types(语言种类) 表的相关操作 DDL数据定义语言
- oracle视图的种类和区别
- Oracle索引梳理系列(六)- Oracle索引种类之函数索引
- oracle 补丁种类和升级方法
- oracle 触发器的种类和触发事件
- oracle连接种类整理
- Oracle 表种类
- Oracle索引梳理系列(三)- Oracle索引种类之反向索引
- oracle的表的种类
- ORACLE 分区表种类以及分区表的创建
- Oracle索引梳理系列(五)- Oracle索引种类之表簇索引(cluster index)