锁
1.锁
- 锁主要分为共享锁和排他锁,只有事务才会产生锁,锁用于保证数据的完整性和准确性。
- 排他锁:会进行独占,排斥其它的排他锁和共享锁
- 共享锁:共享锁只排斥其它的排他锁,不排斥其它共享锁
2.锁的类型
2.1 锁的主要作用
-
DML锁(data locks,数据锁)
用于保护数据的完整性,主要有TX(行级锁)、TM(表级锁)。在数据库中,可通过select * from v$lock查看锁 -
DDL锁(dictionary locks,数据字典锁)
用于保护数据库对象的结构,如表、索引等的结构定义。 -
SYSTEM锁(internal locks and latches)
用于保护数据库的内部结构
2.2 DML加锁
DML锁中有TX和TM两种,而TM锁又可分为RS、RX、S、SRX、X
-
TM
- RS(row share):行共享锁,允许其它用户同时更新其它行,允许其它用户在本行同时加共享锁,不允许加排他锁。
- RX(row exclusive):行排他锁,允许其它用户同时更新其它行,只允许其它用户在其它行同时加行共享锁和行排他锁。
- S(share):共享锁,不允许其它用户同时更新任何行,只允许其它用户同时加共享锁或者行共享锁。
- SRX(share row exclusive):共享行排他锁,不允许其它用户同时更新其它行,只允许其它用户同时加行共享锁。
- X(exclusive):排他锁,禁止其它用户同时更新任何行,禁止其它用户同时加任何其他锁。
-
一览表
操作 加锁模式 许可其它用户加的锁 select * from table_name 无 RS、RX、S、SRX、X update、insert、delete RX RS、RX lock table_name in row share mode RS RS、RX、S、SRX lock table_name in row exclusive mode RX RS、RX lock table_name in share mode S S、RS lock table_name in share row exclusive mode SRX RS lock table_name in exclusive mode X 无

浙公网安备 33010602011771号