Mysql默认事务隔离是可重复读,即在一个事务中读取到的数据是一致的,不会被其他操作污染。
- select 不会受影响,在事务中或者普通执行都可以。
- mysql会为update, insert, delete自动加上排他锁。
- 事务A共享锁,A可以做增删改查,其他事务也可以开共享锁,但是不能开排他锁。所有对锁住的行进行update, deltete 操作受阻。
- 事务A排他锁,A可以做增删改查,其他事务不能再锁。所有对锁住的行进行update, deltete 操作会出现锁等待。
- 两个事务使用共享锁,在改动时会第一个出现锁等待,第二个出现死锁并退出事务,同时第一个改动成功,可以commit。
应用场景:
共享锁:对一张表的数据行加锁,避免改动和删除,对其关联表进行insert等操作。确保两张表的业务一致。
排他锁:确保一张表的数据一致性。