概述
没有并发就没有锁,这一块虽然很多概念性东西,但是理解下对于高并发的考虑还是有帮助的,下面先介绍下理论的东西。
![b90ef90e5d8aa376fcde7a24472812f3.png](https://i-blog.csdnimg.cn/blog_migrate/d149a3d14cf9322bfa33f6192d07edd5.jpeg)
Oracle中锁的分类
Enqueues---队列类型的锁,通常和业务相关的。
Latches ---系统资源方面的锁,比如内存结构,SQL解析..
锁的原则
1、只有被修改时,行才会被锁定。
2、当一条语句修改了一条记录,只有这条记录上被锁定,在Oracle数据库中不存在锁升
级。
3、当某行被修改时,它将阻塞别人对它的修改。
4、当一个事务修改一行时,将在这个行上加上行锁(TX),用于阻止其它事务对相同行
的修改。
5、读永远不会阻止写。
6、读不会阻塞写,但有唯一的一个例外,就是select ...for update。
7、写永远不会阻塞读。
8、当一行被修改后,Oracle通过回滚段提供给数据的一致性读。
Oracle锁的类型
SQL> select type,name from V$lock_type;
![51b9545714a7b0d57d74401f7f49e41d.png](https://i-blog.csdnimg.cn/blog_migrate/dab7b9f452a40426becee99fdd8b8f70.jpeg)
TM锁和TX锁
1、TM 表锁
发生在insert,update,delete以及select for update操作时,目的是保证操
作能够正常进行,并且阻止其它人对表执行DDL操作。
2、TX锁 事务锁(行锁)
对于正在修改的数据,阻止其它会话进行修改。
![a8ea032dabcee657f2a8eb41ea1fce2c.png](https://i-blog.csdnimg.cn/blog_migrate/1b1d60d53c72938b8f720bc185f12043.jpeg)
篇幅有限,关于锁的一些总结的概念性东西就写到这了,后面用实验介绍下update、delete、select update的几种锁定,感兴趣的朋友可以关注下!
![c9e12503cf181d6827598d8a1276615d.gif](https://i-blog.csdnimg.cn/blog_migrate/c3bb25a5f73ee24ecf47e27222bcbf23.gif)