延伸阅读:

三分钟了解Mysql的表级锁

五分钟了解Mysql的行级锁

一分钟深入Mysql的意向锁

我们常用的存储引擎就MyISAM和InnoDB。MyISAM存储主要就简单的表级别锁,下面只说InnoDB的各种锁类型。

InnoDB不仅支持行级别的锁,也支持表级别的锁。平常我们会听到各种锁,你是不是不仅迷茫它们怎么用的,还会迷茫它们 各自之间都是什么关系?

什么是乐观锁和悲观锁?

乐观锁和悲观锁是泛指,不是具体的锁。

乐悲锁:也叫乐观并发控制,它总是乐观的认为用户在并发事务处理时不会影响彼此的数据。

多版本并发控制个人认为就是一种乐观锁,具体参考:《Mysql概要》 里的MVCC。所以乐观锁我们自己也可以很轻松的实现,主要是在有中加一个version字段作为版本号。

悲锁观锁:悲观锁会悲观的认为每次去拿的数据都会被别人修改。所以每次在拿数据的时候都会上锁,从而屏蔽可能违反数据完整性的操作。间隙锁、临键锁都属于悲观锁。

什是表锁和行锁?

表锁和行锁也是泛指,不是具体的锁。

表级锁有:意向共享锁、意向排他锁、自增锁等。InnoDB的行锁都是实现在索引上的。

行级锁有:共享锁、排他锁、记录锁

什么是共享锁(S锁)和排他锁(X锁)?

InnoDB引擎实现了标准的行级别锁,分别是共享锁和排他锁。

  • 拿共享锁是为了让当前事务去读一行数据。
  • 拿排他锁是为了让当前事务去修改或删除某一行数据。

一个事务拿到了当前数据行的共享锁,另一个事务也能马上拿到当前数据行的共享锁。

一个事务拿到了当前数据行的排他锁,则另一个事务不能立马拿到当前数据行的排他锁,因为它会被阻塞直到前一个事务释放。

设置共享锁:select * from user where id = 1 LOCK IN SHARE MODE;

设置排他锁:select * from user where id = 1 FOR UPDATE;

InnoDB到底有几种锁?

(1) 共享/排它锁(Shared and Exclusive Locks)

(2) 意向锁(Intention Locks)

(3) 记录锁(Record Locks)

(4) 间隙锁(Gap Locks)

(5) 临键锁(Next-key Locks)

(6) 插入意向锁(Insert Intention Locks)

(7) 自增锁(Auto-inc Locks)

临键锁是记录锁和间隙锁的组合。

一分钟理清Mysql的锁类型——《深究Mysql锁》相关推荐

  1. 五分钟了解Mysql的行级锁——《深究Mysql锁》

    延伸阅读: 三分钟了解Mysql的表级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  2. 三分钟了解Mysql的表级锁——《深究Mysql锁》

    延伸阅读: 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  3. mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》

    延伸阅读: 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  4. 一分钟深入Mysql的意向锁——《深究Mysql锁》

    延伸阅读: 三分钟了解Mysql的表级锁 五分钟了解Mysql的行级锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  5. 一分钟明白各种SQL语句加的什么锁——《深究Mysql锁》

    一.正常查询 在4个事务隔离级别中,除了在串行化(Serializable)时会加共享锁,其他的都不加锁,即快照读. 二.加了锁的查询 加锁select主要是指: select ... for upd ...

  6. 一分钟了解Mysql的间隙锁——《深究Mysql锁》

    RocketMQ思维导图,不看会后悔哟 Mysql思维导图分享 什么是间隙锁? 间隙锁是一个在索引记录之间的间隙上的锁. 间隙锁的作用 保证某个间隙内的数据在锁定情况下不会发生任何变化.比如我mysq ...

  7. mysql的bigint类型_php mysql bigint 类型

    在mysql里设置了字段类型是bigint的,20位 然后通过php读取数组出来,使用json_encode 在不同的环境下,有不同的表现 1.这个字段在json中是字符串类型的, 2.这个字段读取出 ...

  8. mysql锁的基本类型_Mysql的锁

    (1)锁类型:表锁&行锁 表锁是在mysql server层实现的,而行锁的mysql存储引擎实现的 所以表锁相对简单,直接给该表加一个锁标识即可.行锁则相对复杂. 注意事项: 1.innod ...

  9. MySQL事务原理之MVCC和锁机制

    MVCC和锁 一.MVCC 1.1.read view 1.2.聚集索引的隐藏列 1.3.事务的可见性问题 1.5.快照读 1.6.当前读 二.redolog 三.undolog 四.锁 机制 4.1 ...

  10. 一文搞懂 mysql 中的共享锁、排他锁、悲观锁、乐观锁及使用场景

    目录 一.常见锁类型 二.Mysql引擎介绍 三.常用引擎间的区别 四.共享锁与排他锁 五.排他锁的实际应用 六.共享锁的实际应用 七.死锁的发生 八.另一种发生死锁的情景 九.死锁的解决方式 十.意 ...

最新文章

  1. appJSON[tabBar][0][pagePath] pages/basics/basics 需在 pages 数组中
  2. linux虚拟单用户数,Linux单用户模式
  3. Jupyter command 'notebook': [Errno 'jupyter-notebook' not found] 2解决方法
  4. Appium+python的单元测试框架unittest(2)——fixtures(转)
  5. (转)CDN是如何工作的?
  6. 我看中国软件---技术篇
  7. 数据库中的数据类型和c#的数据类型的映射表(转)
  8. 微服务最佳实践 【已翻译100%】
  9. java的重载 和重写
  10. XNA Game Studio 2.0安装问题,崩溃了
  11. Lucene使用Filter搜索过滤
  12. 怎样在LaTeX中方便输入带圆圈的数字
  13. RGB-D相机原理与选型
  14. Outlining and Hiding Code----feature
  15. python多边形的绘制教程_使用Python matplotlib绘制3D多边形
  16. 用python完成一个数独小游戏
  17. 金融系列-会计基础知识
  18. [转]爱因斯坦·毕加索——空间、时间和动人心魄之美
  19. python证书有什么用_用Python在获奖证书写上获奖者的名字
  20. 一个高效的敏感词过滤方法(PHP)

热门文章

  1. buuctf 文件中的秘密
  2. ubuntu中pycharm打不开的的处理方法
  3. Exclusive monitor在spinlock中的应用
  4. linux kernel同步方法的总结
  5. 人工智能-基于U^2-Net的肖像画生成算法
  6. 012 背包二叉树遍历分析和代码编写
  7. css中实现字符超出宽度自动换行和英语字符不断行的解决方法
  8. 11、HTML <head>标签
  9. 7、MySQL数据类型的选择
  10. Acwing第 25 场周赛【完结】