• 什么是共享读锁和排他写锁?


    ①由非更新(读取)操作创建的锁。其他用户可以并发读取数据,但任何事务都不能获取数据上的排它锁,直到已释放所有共享锁。共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事务T只能读A, 不能修改A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

     

    ②排他锁(X锁),又称为写锁、独占锁,是一种基本的锁类型。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。

     

    共享锁与排它锁区别:

     

    1、共享锁只用于表级,排他锁用于行级。


    2、加了共享锁的对象,可以继续加共享锁,不能再加排他锁。加了排他锁后,不能再加任何锁。


    3、比如一个DML操作(数据增删改操作),就要对受影响的行加排他锁,这样就不允许再加别的锁,也就是说别的会话不能修改这些行。同时为了避免在做这个DML操作的时候,有别的会话执行DDL (表结构更改等操作) ,修改表的定义,所以要在表上加共享锁,这样就阻止了DDL操作。


    4、当执行DDL操作时,就需要在全表上加排他锁。
     
  • 相关阅读:
    高斯消元模板(通用+异或)
    矩阵快速幂模板
    hdu 6185 递推+矩阵快速幂
    欧几里得小结
    乘法逆元模板
    vijo 1456最小总代价
    MariaDB数据库
    docker基本命令
    std::tuple
    boost::asio
  • 原文地址:https://www.cnblogs.com/frankyou/p/4667113.html
Copyright © 2020-2023  润新知