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可以自己测试。

死锁:

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

posted @ 2023-07-28 16:28  海和风  阅读(27)  评论(0)    收藏  举报