面试题答案
一键面试共享锁(S锁)
- 概念:共享锁又称为读锁,若事务对数据对象A加S锁,那么其他事务只能对A再加S锁,不能加X锁,直到该事务释放A上的S锁。多个事务可以同时持有同一数据对象的S锁。
- 并发操作中的作用:用于读取操作,允许多个事务同时读取数据,保证数据的一致性和并发读的效率。比如多个用户同时查询商品信息,他们可以同时获取共享锁来读取数据,不会互相阻塞。
- 相互关系:多个事务的S锁之间不冲突,可以共存;但S锁与X锁相互冲突,若已有事务对数据对象加了S锁,其他事务不能加X锁;反之,若已有事务对数据对象加了X锁,其他事务不能加S锁。
排他锁(X锁)
- 概念:排他锁又称为写锁,若事务对数据对象A加X锁,那么其他事务不能再对A加任何锁,直到该事务释放A上的X锁。
- 并发操作中的作用:用于数据的修改操作,确保在任何时刻只有一个事务可以对数据进行修改,防止数据不一致问题。例如在更新用户账户余额时,加X锁可避免其他事务同时修改导致数据错误。
- 相互关系:X锁与其他任何锁(包括S锁和X锁本身)都相互冲突。即只要有一个事务对数据对象加了X锁,其他事务不能再对该数据对象加任何类型的锁。