MST

星途 面试题库

面试题:MariaDB线程上下文并发控制中的锁机制

在MariaDB线程上下文并发控制场景下,简要阐述常用的锁机制有哪些,以及它们分别适用于哪些场景,比如行锁、表锁等。
28.6万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

常用锁机制及适用场景

  1. 表锁
    • 概述:对整个表进行锁定,开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
    • 适用场景
      • 读操作远多于写操作的场景,例如一些统计类的报表生成,在生成报表过程中,对整个表进行读取操作,使用表锁可简单快速地锁定表,避免其他写操作干扰。
      • 执行全表扫描的操作,比如批量删除数据等,使用表锁可保证操作过程中表数据的一致性。
  2. 行锁
    • 概述:只锁定需要操作的行数据,锁定粒度最小,发生锁冲突的概率最低,并发度最高;但开销大,加锁慢,且容易出现死锁。
    • 适用场景
      • 高并发的读写场景,比如电商的库存扣减,不同的订单可能操作不同的库存行数据,使用行锁可以只锁定对应的库存行,而不影响其他库存行的操作,提高并发处理能力。
      • 对数据一致性要求高且写操作频繁的场景,例如银行转账业务,每次转账只涉及特定的账户行数据,行锁可保证操作的原子性和数据一致性。
  3. 页锁
    • 概述:锁定的粒度介于表锁和行锁之间,一次锁定相邻的一组记录。开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度也介于两者之间,并发度一般。
    • 适用场景
      • 某些场景下,数据按页组织,且对页内数据的操作频率较高,如数据仓库中的一些按页存储和处理的数据,页锁可以在一定程度上平衡并发和锁开销。
      • 对于一些中等并发度的场景,既希望比表锁有更高的并发度,又不想像行锁那样有较大的开销和死锁风险,页锁可作为一种选择。