美文网首页MySql学习
【问答分享第一弹】MySQL锁总结:MySQL行锁、表锁、排他锁

【问答分享第一弹】MySQL锁总结:MySQL行锁、表锁、排他锁

作者: 猿天下 | 来源:发表于2021-07-09 17:27 被阅读0次

大家好,我是小于哥哈。前几天能分享了第一期面试题,MySQL 中有哪几种锁 和 这些锁各有哪些特点 ,这道面试题是经常会被问到的一个面试题,大家反馈的都挺不错的。今天特此来总结一下。

首发于公众号【终端研发部】

核心

Mysql锁机制,分为哪些锁,有什么样的特点?

目标

  • 锁的分类
  • 锁的特点
  • 锁的应用场景

事务并发带来的问题与解决方案

补充

1.脏读:一个事务可以读取到另一个事务未提交的数据。如下图:

解决脏读:修改数据时加上写锁

不可重复读:在一个事务中不同时间段查询出现不同的结果,可能被更新可能被删除。如下图

解决不可重复读:事务A第一次读数据时加上读锁,事务B不能修改,会阻塞。

3.幻读:在一个事务中不同时间段查询,记录数不同。与不可重复读的区别是:在幻读中,已经读取的数据不会改变,只是与以前相比,会有更多的数据满足查询条件。如下图:

解决幻读:事务A范围查询时加上临键锁,锁住相邻区间,事务B不能插入到被锁住的区间,防止幻读。

答案揭晓

按锁粒度分类:

  • 1、行级锁
  • 2、表级锁
  • 3、页级锁

解释:

1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

3、页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

按照锁级别分类 :

  • 1、共享锁
  • 2、排他锁
  • 3、意向锁

解释:

1、共享锁:一旦上锁,任何事务(包括当前事务)无法对其修改,其他事务可以并发读取数据,也可在对此数据再加共享锁

2、排他锁(独占锁):如果事务对数据A加上排他锁后,则其他事务不可并发读取数据,也不能再对A加任何类型的锁。获准排他锁的事务既能读数据,又能修改数据。

3、意向锁: 分为意向共享锁和意向排他锁,特点: 意向锁是InnoDB自动加的,不需要用户干预。

ps: 如何学习java ,推荐两个白嫖学习的资料:

1、书籍:

codeGoogler/ProgramBooks

2:视频教程:

全网免费Java资源下载SpringBoot、Spring、Mybatis、Redis、RabbitMQ、SpringCloud、高并发(持续更新)_这个时代,作为程序员可能要学习小程序-CSDN博客

最后

最后,照旧安利一波我们的工种号:「终端研发部」,目前每天都会推荐一篇优质的技术相关的文章,主要分享java相关的技术与面试技巧,我们的目标是:知道是什么,为什么,打好基础,做好每一点!这个主创技术公众号超级值得大家关注。

如果你有什么技术上的问题,都可以咨询我,技术路上漫长而优雅, 于哥可以一直陪伴。如果有帮助,欢迎点赞!

相关文章

  • 共享 + 排他锁

    mysql锁机制分为表级锁和行级锁 ,mysql中行级锁中的共享锁与排他锁进行分享交流。 测试语法 begin; ...

  • MS汇总

    数据库相关[MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)Mysql索引优化Mysql查询优化Mysq...

  • rails中乐观锁和悲观锁的使用

    MySQL乐观锁和悲观锁的介绍可以参考之前的一篇文章MySQL中的锁(行锁,表锁,乐观锁,悲观锁,共享锁,排他锁)...

  • 【问答分享第一弹】MySQL锁总结:MySQL行锁、表锁、排他锁

    大家好,我是小于哥哈。前几天能分享了第一期面试题,MySQL 中有哪几种锁 和 这些锁各有哪些特点 ,这道面试题是...

  • Mysql的锁

    MySql锁的分类 Mysql里的锁大致可以分为全局锁、表级锁和行锁三类。 全局锁 Mysql 增加全局锁的方法:...

  • Innodb的锁

    Innodb的锁是行级锁 mysql delete是否会锁表 MySQL的InnoDB存储引擎支持行级锁,Inno...

  • Mysql的全局锁和表锁

    以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元...

  • 总结Mysql中的锁

    MySQL中的锁 概述 MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会...

  • InnoDB引擎的行锁和表锁

    在Mysql中,Innodb数据引擎支持行锁和表锁,Myisam数据引擎只支持表锁 1 行锁和表锁 行锁是通过索引...

  • MySQL知识点

    Mysql中有哪几种锁? MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不...

网友评论

    本文标题:【问答分享第一弹】MySQL锁总结:MySQL行锁、表锁、排他锁

    本文链接:https://www.haomeiwen.com/subject/hsobultx.html