MST

星途 面试题库

面试题:MySQL中InnoDB存储引擎的行锁有哪几种类型,简述其特点

请阐述MySQL InnoDB存储引擎中行锁的共享锁(S锁)、排他锁(X锁)的概念以及它们在并发操作中的作用和相互关系。
20.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

共享锁(S锁)

  1. 概念:共享锁又称为读锁,若事务对数据对象A加S锁,那么其他事务只能对A再加S锁,不能加X锁,直到该事务释放A上的S锁。多个事务可以同时持有同一数据对象的S锁。
  2. 并发操作中的作用:用于读取操作,允许多个事务同时读取数据,保证数据的一致性和并发读的效率。比如多个用户同时查询商品信息,他们可以同时获取共享锁来读取数据,不会互相阻塞。
  3. 相互关系:多个事务的S锁之间不冲突,可以共存;但S锁与X锁相互冲突,若已有事务对数据对象加了S锁,其他事务不能加X锁;反之,若已有事务对数据对象加了X锁,其他事务不能加S锁。

排他锁(X锁)

  1. 概念:排他锁又称为写锁,若事务对数据对象A加X锁,那么其他事务不能再对A加任何锁,直到该事务释放A上的X锁。
  2. 并发操作中的作用:用于数据的修改操作,确保在任何时刻只有一个事务可以对数据进行修改,防止数据不一致问题。例如在更新用户账户余额时,加X锁可避免其他事务同时修改导致数据错误。
  3. 相互关系:X锁与其他任何锁(包括S锁和X锁本身)都相互冲突。即只要有一个事务对数据对象加了X锁,其他事务不能再对该数据对象加任何类型的锁。