MST

星途 面试题库

面试题:MySQL中表级锁和行级锁的应用场景及特点

请阐述MySQL中表级锁和行级锁各自适用于哪些场景,并详细说明它们的特点,包括加锁开销、并发性能、死锁可能性等方面。
42.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

表级锁

  • 适用场景
    • 当事务需要对整个表进行操作,比如对表进行备份、大批量数据删除、修改等操作时,表级锁较为合适。因为此时操作涉及整个表,使用表级锁可避免行级锁带来的额外开销。
    • 对于一些写操作远多于读操作的表,并且每次写操作几乎会影响到整个表的数据,使用表级锁可减少锁的争用。
  • 特点
    • 加锁开销:加锁开销小,因为只需对整个表加锁,无需对每一行数据单独加锁。
    • 并发性能:并发性能低,因为表级锁会锁定整个表,在锁期间,其他事务对该表的读写操作都需等待,限制了并发访问。
    • 死锁可能性:死锁可能性低,由于每次加锁针对整个表,不像行级锁可能出现多个事务对不同行加锁形成循环等待的情况。

行级锁

  • 适用场景
    • 高并发的OLTP(联机事务处理)系统中,当事务对表中的少量行进行操作时,行级锁能显著提高并发性能。例如电商系统中的库存管理,每次可能只修改某一商品的库存数量。
    • 读操作较多且写操作较少的场景,行级锁可减少对读操作的阻塞,因为它只锁定涉及的行,不影响其他行的访问。
  • 特点
    • 加锁开销:加锁开销大,需要对每一行数据进行加锁操作,相比于表级锁,会消耗更多的系统资源。
    • 并发性能:并发性能高,只锁定需要操作的行,其他行仍然可以被其他事务访问,大大提高了系统的并发处理能力。
    • 死锁可能性:死锁可能性高,由于多个事务可能同时对不同行加锁,然后又尝试获取对方已锁定的行的锁,容易形成循环等待,从而导致死锁。