首页 > 技术文章 > 共享锁和排他锁

fenle 2019-04-04 20:41 原文

 

Mysql默认事务隔离是可重复读,即在一个事务中读取到的数据是一致的,不会被其他操作污染。

  1. select 不会受影响,在事务中或者普通执行都可以。
  2. mysql会为update, insert, delete自动加上排他锁。
  3. 事务A共享锁A可以做增删改查,其他事务也可以开共享锁,但是不能开排他锁。所有对锁住的行进行update, deltete 操作受阻。
  4. 事务A排他锁A可以做增删改查,其他事务不能再锁。所有对锁住的行进行update, deltete 操作会出现锁等待
  5. 两个事务使用共享锁,在改动时会第一个出现锁等待,第二个出现死锁并退出事务,同时第一个改动成功,可以commit。

应用场景:

共享锁:对一张表的数据行加锁,避免改动和删除,对其关联表进行insert等操作。确保两张表的业务一致。

排他锁:确保一张表的数据一致性。

推荐阅读