一分钟理清Mysql的锁类型——《深究Mysql锁》
延伸阅读:
三分钟了解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锁》相关推荐
- 五分钟了解Mysql的行级锁——《深究Mysql锁》
延伸阅读: 三分钟了解Mysql的表级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...
- 三分钟了解Mysql的表级锁——《深究Mysql锁》
延伸阅读: 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...
- mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》
延伸阅读: 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...
- 一分钟深入Mysql的意向锁——《深究Mysql锁》
延伸阅读: 三分钟了解Mysql的表级锁 五分钟了解Mysql的行级锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...
- 一分钟明白各种SQL语句加的什么锁——《深究Mysql锁》
一.正常查询 在4个事务隔离级别中,除了在串行化(Serializable)时会加共享锁,其他的都不加锁,即快照读. 二.加了锁的查询 加锁select主要是指: select ... for upd ...
- 一分钟了解Mysql的间隙锁——《深究Mysql锁》
RocketMQ思维导图,不看会后悔哟 Mysql思维导图分享 什么是间隙锁? 间隙锁是一个在索引记录之间的间隙上的锁. 间隙锁的作用 保证某个间隙内的数据在锁定情况下不会发生任何变化.比如我mysq ...
- mysql的bigint类型_php mysql bigint 类型
在mysql里设置了字段类型是bigint的,20位 然后通过php读取数组出来,使用json_encode 在不同的环境下,有不同的表现 1.这个字段在json中是字符串类型的, 2.这个字段读取出 ...
- mysql锁的基本类型_Mysql的锁
(1)锁类型:表锁&行锁 表锁是在mysql server层实现的,而行锁的mysql存储引擎实现的 所以表锁相对简单,直接给该表加一个锁标识即可.行锁则相对复杂. 注意事项: 1.innod ...
- MySQL事务原理之MVCC和锁机制
MVCC和锁 一.MVCC 1.1.read view 1.2.聚集索引的隐藏列 1.3.事务的可见性问题 1.5.快照读 1.6.当前读 二.redolog 三.undolog 四.锁 机制 4.1 ...
- 一文搞懂 mysql 中的共享锁、排他锁、悲观锁、乐观锁及使用场景
目录 一.常见锁类型 二.Mysql引擎介绍 三.常用引擎间的区别 四.共享锁与排他锁 五.排他锁的实际应用 六.共享锁的实际应用 七.死锁的发生 八.另一种发生死锁的情景 九.死锁的解决方式 十.意 ...
最新文章
- appJSON[tabBar][0][pagePath] pages/basics/basics 需在 pages 数组中
- linux虚拟单用户数,Linux单用户模式
- Jupyter command 'notebook': [Errno 'jupyter-notebook' not found] 2解决方法
- Appium+python的单元测试框架unittest(2)——fixtures(转)
- (转)CDN是如何工作的?
- 我看中国软件---技术篇
- 数据库中的数据类型和c#的数据类型的映射表(转)
- 微服务最佳实践 【已翻译100%】
- java的重载 和重写
- XNA Game Studio 2.0安装问题,崩溃了
- Lucene使用Filter搜索过滤
- 怎样在LaTeX中方便输入带圆圈的数字
- RGB-D相机原理与选型
- Outlining and Hiding Code----feature
- python多边形的绘制教程_使用Python matplotlib绘制3D多边形
- 用python完成一个数独小游戏
- 金融系列-会计基础知识
- [转]爱因斯坦·毕加索——空间、时间和动人心魄之美
- python证书有什么用_用Python在获奖证书写上获奖者的名字
- 一个高效的敏感词过滤方法(PHP)