oracle数据库中的锁简单的认识

1、Oracle锁类型
锁的作用:保护数据
latch锁:chain,链(优化)
LOCK锁
排他锁(X)
共享锁(S)
体验:
update scott.emp 
set ename=ename||'a'
where empno='7369'
/
解锁:rollback、commit


update scott.emp
set ename=ename||'a'
where empno='7369'
/


并不影响: 
select *
from scott.emp
 where empno=7369

2、行级锁:DML语句
事务锁TX
锁的结构
事务锁的加锁和解锁过程
只有排他锁
不影响读(CR块)
3、表级锁:TM


加入一个进程A更新一个表中的数据,更新多条,进程A 对已表就会产生三种锁:在每一行加了行级锁、
事务锁(事物锁:TX)、表级锁(表级锁:TM 名字:RX)。
RX这个表级锁 是兼容。
当一个用户要删除这个表时,要为这个表加一个x锁,但是RX和x是不能同时存在的。因此另一个用户不能删除该锁。




行级排他锁(Row exclusive)RX锁
当我们进行DML时,会自动在被更新的表上添加RX锁,可以执行LOCK命令显式的在表上添加RX锁
允许其他事务通过DML语句修改相同表里的其他数据行
允许使用lock命令对表添加RX锁定
不允许其他事务对表添加X锁
行级共享锁(Row Shared,简称RS锁)
select … from for update

共享锁(Share,简称S锁)
通过lock table in share mode命令添加该S锁
排他锁(Exclusive,简称X锁)
通过lock table in exclusive mode命令添加X锁
共享行级排他锁(Share Row Exclusive,简称SRX锁)
通过lock table in share row exclusive mode命令添加SRX锁


lock table  in [row share][row exclusive][share][share row exclusive][exclusive] mode;


4、锁的兼容性
5、加锁语句以及锁的释放


锁之间的兼容性:

oracle数据库中的锁简单的认识_第1张图片

加锁语句:

oracle数据库中的锁简单的认识_第2张图片

注意:

1、当用户感觉数据库操作比较慢时,可能并不是数据的负载比较的大,而是锁的原因

2、没有锁就没用并发,因为锁所以并发。然而锁限制类并发(当两个用户对一条数据同时操作时)







你可能感兴趣的:(oracle数据库中的锁简单的认识)