面试题答案
一键面试表级锁适用场景
- 高并发读场景:当业务主要是大量的读操作,写操作较少时,表级锁可以提供较好的性能。例如新闻网站,大量用户同时访问新闻页面进行阅读,但很少有修改新闻内容的操作。在这种场景下,使用表级锁进行读锁操作,可以一次性锁定整个表,允许大量并发读,提高系统整体性能。因为读锁之间不互斥,多个读操作可以同时进行。
- 数据一致性要求较低的简单事务场景:如某些简单的统计系统,定期对数据进行汇总统计,这种操作对数据一致性要求不是非常严格,且操作涉及全表数据。例如一个简单的电商销售统计系统,每天凌晨统计当天各类商品销售总额,此时使用表级锁,可以快速锁定表,进行汇总计算,虽然在锁定期间无法进行写操作,但由于操作时间在凌晨业务低谷期,对业务影响较小。
行级锁适用场景
- 高并发写场景:在电商系统的库存管理模块,当多个用户同时购买同一款商品时,需要对商品库存进行扣减操作。每个用户的购买操作只涉及该商品对应的行数据。使用行级锁可以精确锁定需要修改的行,不同用户对不同商品库存的修改操作可以并发执行,大大提高了系统的并发处理能力,同时保证数据的一致性。因为行级锁粒度小,对其他行的操作影响小。
- 数据一致性要求高的复杂事务场景:以银行转账业务为例,从一个账户向另一个账户转账,这是一个涉及多个操作的复杂事务,且对数据一致性要求极高。在更新两个账户余额时,使用行级锁可以分别锁定这两个账户对应的行,确保在整个转账事务执行过程中,其他事务无法修改这两个账户的数据,避免出现数据不一致的情况,如转账过程中一个账户余额扣减了,另一个账户余额却未增加。