视频课程
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

视频课程
立即观看
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频
开始学习
会员专享

视频合集

最全MySQL锁详解:表/行/页锁、共享/排它锁、悲观/乐观锁等

  • 课程笔记
  • 问答交流

众所周知,MySQL索引MySQL事务和锁是mysql中非常重要功能,同时也是面试的重点和难点。

为了助大家掌握好MySQL的各种锁,这节课我会重点来讲解以下5点:

1.MySQL锁包含哪些类型?

2.不同的存储引擎采用什么锁?

3.数据库的读写锁是哪个?

4.行锁的底层实现?

5.乐观锁和悲观锁的实现?

MySQL锁的类型

最全MySQL锁详解:表/行/页锁、共享/排它锁、悲观/乐观锁等-mikechen

1.表级锁

 

 

评论交流
  1. 会会

    老师看下我的截图,事务1 对 number=13 for update, 会触发next key锁吗??

  2. 路正银

    1.谈谈你对事务与锁的理解?
    事务是指作为单个逻辑工作单元执行的一系列操作,要么完全的执行,要么完全地不执行。必须满足ACID属性
    事务会有并发控制的问题,会出现脏读、可不重复读、幻读的问题
    数据库事务隔离级别是为了解决事务并发可能出现的问题
    数据库的隔离级别是通过数据库锁实现的

    2.常见的mysql数据库锁有哪些?
    3.各自的优劣势与应用场景?
    表级锁:开销小,加锁快,不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。试用于查询为主,更新少的情况。
    行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生冲突的概率最低,并发度也最高。
    页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般。
    InnoDB行锁的类型
    共享锁(读锁):多个事务对于同一数据可以共享一把锁,都能访问到数据
    排它锁(写锁):对某一资源加排它锁,自身可以进行增删改查,其他人无法进行任何操作
    InnoDB表锁的类型
    意向锁
    意向共享锁:事务想对表中的某些记录加上共享锁
    意向排它锁:事务想对表中的某些记录加上排它锁
    InnoDB行锁实现方式(锁的是索引)
    记录锁:单个记录上的锁
    间隙锁:锁定一个范围,但不包括记录本身
    Next-Key Lock:间隙锁+记录锁,锁定一个范围,并且锁定记录本身

    4.MySQL如何解决死锁?
    等待,直到超时
    发起死锁检测,主动回滚一条事务,让其他事务继续执行

    • mikechen

      事务、锁、索引,这是3大必考点,再加上我下周要讲的性能优化,如果说这几点都掌握了,基本就没有问题了,加油 ✗拳头✗ 。

      备注:其实死锁的关键在于,两个(或以上)的Session加锁的顺序不一致,这里还可以参考我之前在Java多线程与并发编程里面讲到的死锁,其实道理都是一致的,防止死锁是核心关键点。