oracle锁 lock
oracle中锁的分类
enqueues---队列类型的锁,通常和业务相关的。
latches--系统资源方面的锁,比如内存结构,sql解析。
锁的原则:
1、只有被修改时,行才会被锁定。
2、当一条语句修改了一条记录,只有这条记录上被锁定,在oracle中不存在锁升级。
3、当某行被修改时,它将阻塞别人对他的修改。
4、当一个事务修改一行时,将在这个行上加上行锁(tx),用于阻止其他事务对相同行的修改。
5、读永远不会阻止写。
6、读不会阻塞写,但有唯一的一个例外,就是select。。。for update
7、写永远不会阻塞读。
8、当一行被修改后,oracle通过回滚段提供给数据的一致性读。
常见的锁:
TM锁和TX锁
TM表锁,发生在insert,update,delete以及select for update 操作时,目的时保证操作能够正常进行,
并组织其他人对表执行DDL操作。
TX锁 事务锁(行锁)对于正在修改的数据,阻止其他会话进行修改。
演示几种锁定,阻塞
update的阻塞

delete的阻塞

select for update 阻塞

TM锁几种模式的互斥关系。

举例如下,其余手动锁表的sql可以自己测试。

死锁:
两个会话互相持有对方资源导致死锁。

浙公网安备 33010602011771号