MST
星途 面试题库

面试题:MySQL中不同锁粒度适用场景分析

请阐述MySQL中表级锁、行级锁和页级锁的特点,并举例说明在哪些业务场景下分别适合使用这三种锁粒度。
30.1万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

表级锁

  • 特点
    • 锁粒度大:对整个表进行锁定,开销小,加锁快。
    • 并发度低:一个事务对表加锁后,其他事务对该表的读写操作都需等待锁释放,容易出现锁争用。
    • 死锁概率低:由于锁定范围大,不会出现两个事务相互等待对方释放锁资源的情况。
  • 适用场景
    • 数据操作频繁且并发量较小:例如一些小网站后台系统的配置表,数据更新频率不高,并发访问量不大,使用表级锁可快速锁定表,完成操作。
    • 以读为主:如某些日志记录表,主要是插入日志数据,读操作相对较少,使用表级锁不会对性能产生太大影响。

行级锁

  • 特点
    • 锁粒度小:只锁定需要操作的行数据,开销大,加锁慢。
    • 并发度高:不同事务可同时对不同行进行操作,减少锁争用,提高并发性能。
    • 死锁概率高:由于多个事务可同时锁定不同行,可能出现相互等待对方释放锁资源的死锁情况。
  • 适用场景
    • 高并发的读写操作:比如电商系统中的订单表,大量用户同时下单,每个订单操作只涉及单行数据,使用行级锁可最大程度提高并发处理能力。
    • 数据一致性要求高:在银行转账业务中,涉及账户余额的修改,必须保证数据的一致性,行级锁可确保同一时间只有一个事务对特定账户行进行操作。

页级锁

  • 特点
    • 锁粒度介于表级锁和行级锁之间:以页(数据库中数据存储的基本单位)为单位进行锁定,开销和加锁速度适中。
    • 并发度适中:能在一定程度上减少锁争用,比表级锁并发度高,但低于行级锁。
    • 死锁概率适中:比行级锁死锁概率低,比表级锁死锁概率高。
  • 适用场景
    • 中等并发的场景:例如论坛的帖子表,并发度不像电商订单表那么高,但也不是很低,页级锁可平衡锁开销和并发性能。
    • 数据操作具有局部性:若数据操作集中在某些页面,使用页级锁可减少锁的范围,提高并发处理能力。