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
posted @ 2020-10-18 12:12  orz_cc  阅读(116)  评论(0)    收藏  举报