面试题答案
一键面试共享锁(Shared Lock)
- 并发操作场景:适用于多个事务同时读取数据的场景。当一个事务对数据加上共享锁后,其他事务可以同时获取该数据的共享锁来读取数据,但不能获取排他锁进行写入操作。
- 举例:例如在电商系统中,多个用户同时查询商品库存数量。事务A获取商品库存数据的共享锁进行读取,此时事务B也可以获取该共享锁读取库存数据,不会相互阻塞,保证了并发读的性能。
排他锁(Exclusive Lock)
- 并发操作场景:用于对数据进行修改的操作场景。当一个事务对数据加上排他锁后,其他事务既不能获取共享锁读取数据,也不能获取排他锁进行写入操作,直到持有排他锁的事务释放锁。
- 举例:还是电商系统,当某个用户下单购买商品时,需要减少商品库存。事务C获取商品库存数据的排他锁,然后进行库存数量的更新操作。在事务C未提交或回滚释放排他锁前,其他事务不能对该库存数据进行读或写操作,避免了数据不一致问题,比如超卖现象。
两者适用场景差异
共享锁适用于以读为主的场景,能提高并发读的效率,允许多个事务同时读取数据;而排他锁适用于写操作场景,确保在数据修改时的原子性和一致性,防止其他事务干扰修改过程,避免数据冲突。