【面试题】MySQL的锁机制

MySQL的锁机制

在这里插入图片描述

通常有

  • 行锁
    行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。有可能会出现死锁的情况。

  • 表锁
    表级锁是mysql锁中粒度最大的一种锁,表示当前的操作对整张表加锁,资源开销比行锁少,不会出现死锁的情况,但是发生锁冲突的概率很大。

  • 页锁
    页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。




常见的执行引擎对这两种锁的支持

在这里插入图片描述




实现方式

InnoDB行锁是通过给索引上的索引项加锁 来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的。

InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!




根据使用方式,行锁和表锁都可分为

  • 共享锁(读锁):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。

  • 排它锁(写锁):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。

猜你喜欢

转载自blog.csdn.net/qq_42380734/article/details/108713516