MST

星途 面试题库

面试题:MySQL中常见的锁类型有哪些,它们如何保障数据一致性?

请阐述MySQL中共享锁(S锁)、排他锁(X锁)、意向锁等常见锁类型的特点,并说明它们在保障数据一致性方面分别起到什么作用。
17.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

共享锁(S锁)

  • 特点:多个事务可以同时对同一数据对象加共享锁,即共享锁具有兼容性,持有共享锁的事务只能读取数据,不能修改数据。
  • 保障数据一致性作用:允许多个事务并发读取数据,确保在读取过程中数据不会被修改,维持数据读取时的一致性状态,避免脏读等问题。

排他锁(X锁)

  • 特点:排他锁具有排他性,同一时刻只有一个事务能对数据对象加排他锁,持有排他锁的事务可以对数据进行读取和修改操作,其他事务不能再对该数据加任何锁,直到排他锁被释放。
  • 保障数据一致性作用:确保在数据修改时,没有其他事务同时进行修改,避免数据竞争导致的数据不一致,保证修改操作的原子性,防止丢失更新等问题。

意向锁

  • 特点:意向锁分为意向共享锁(IS锁)和意向排他锁(IX锁),是表级锁,用于表示事务想要在表中的某些行上加共享锁或排他锁的意图。意向锁是在获取行级锁之前,先获取表级的意向锁。意向共享锁与共享锁兼容,意向排他锁与其他意向锁和排他锁不兼容。
  • 保障数据一致性作用:减少锁等待和死锁的发生,提高并发性能。在对表中的行数据加锁前,先获取意向锁,使得数据库可以快速判断是否可以对表进行相应的锁操作,避免在获取行锁时发现表已经被其他事务以不兼容的方式锁定,从而提高并发控制的效率,维护数据一致性。