zoukankan      html  css  js  c++  java
  • Oracle Lock 概述

    按锁的机制分类

      排他锁( X ):如果事务T对对象A加上排他锁,则只允许T对A对象读取和修改,其他事务不能对A增加任何锁,直到T释放加载A上的排他锁

      共享锁( S ):如果事务T对表A加上共享锁,则事务T可以读该表,但是不能修改该表数据。其他事务也只能对该对象加上共享锁,但是不能加上排他锁。这就保证了其他事务可以读A表数据,但是不能修改A表数据(这就不会影响到读该表的事务了,有利于并发操作)。

    按操作行为分类

      DML Locks  保证并发情况下的数据完整性

      DDL Locks  用于保护数据库对象的结构

      System Locks 保护数据库的内部结构

    DML Locks:

      Row Locks (TX) 称为行级锁。当事务执行 DML 语句(INSERT, UPDATE, DELETE, and SELECT with the FOR UPDATE clause)时会申请TX 类型的锁,TX 的机制是排他锁

      Table Locks (TM) 称为表级锁。当Oracle执行 DML 语句时,系统自动在所要操作的表上申请TM类型的锁。

    TM锁类型表细分:

    SQL Statement Mode of Table Lock Lock Modes Permitted?
    RS RX S SRX X
    SELECT...FROM table... none Y Y Y Y Y
    INSERT INTO table ... RX Y Y N N N
    UPDATE table ... RX Y* Y* N N N
    DELETE FROM table ... RX Y* Y* N N N
    SELECT ... FROM table FOR UPDATE OF ... RS Y* Y* Y* Y* N
    LOCK TABLE table IN ROW SHARE MODE RS Y Y Y Y N
    LOCK TABLE table IN ROW EXCLUSIVE MODE RX Y Y N N N
    LOCK TABLE table IN SHARE MODE S Y N Y N N
    LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE SRX Y N N N N
    LOCK TABLE table IN EXCLUSIVE MODE X N N N N N

     RS: row share
       RX: row exclusive
       S: share
       SRX: share row exclusive
       X: exclusive

    注:Y的含义是完全不阻塞其它事务对相应锁的申请;Y*的含义是不阻塞其它事务对相应锁的申请(同表不同行),但对同一行数据申请相应的琐时则会发生等待。

    DDL Locks:

      排他DDL锁(Exclusive DDL lock):阻塞其他会话得到该对象的DDL锁或DML锁。在DDL操作期间你可以查询一个表,但是无法以任何方式修改这个表。 

      共享DDL锁(Share DDL lock):保护所引用对象的结构,使其结构不会被其他会话修改。

    相关视图

    • V$LOCK
    • V$LOCKED_OBJECT
  • 相关阅读:
    正则中的顺序环视和逆序环视
    LeetCode 第 27 场双周赛
    LeetCode 每日一题 198. 打家劫舍
    LeetCode 每日一题 974. 和可被 K 整除的子数组
    LeetCode 每日一题 287. 寻找重复数
    LeetCode 每日一题 4. 寻找两个正序数组的中位数
    LeetCode 每日一题 146. LRU缓存机制
    LeetCode 每日一题 105. 从前序与中序遍历序列构造二叉树
    [转]多线程的那点儿事
    LeetCode 每日一题 5. 最长回文子串
  • 原文地址:https://www.cnblogs.com/polestar/p/3325732.html
Copyright © 2011-2022 走看看