mysql锁之Next-Key Locks
一个Next-key锁结合了行锁和gap锁。
InnoDB执行一个行级别锁在这样的一个途径,那就是它搜索或者扫描一个表索引时,它设置共享或者独占锁在它遭遇的索引记录上。于是,行级锁是真实的行记录锁。一个next-key锁在一个行记录上总是这个行记录前的间隙。这就是一个next-key是一个索引记录锁加上一个在这个记录前的间隙锁。如果一个会话有一个共享锁或者一个独占锁在一个索引的记录R上,另外的会话不能插入一个新索引记录在R前的间隙。
猜测一个索引包含10,11,13,20。可能这个索引的next-key锁盖以下间隔,这个间隔在一个圆括号表示的排除节点符号和一个方括号表示包含节点符号。

看这个最后的间隔,next-key锁锁定在索引中上面的最大值和一个“临界值”伪记录,这个伪记录有一个比任何实际值都高的值,这个伪记录不是真实的记录,因此,在这个影响下,这个next-key锁仅仅锁了跟随在最大索引值的间隙。
默认情况下,InnoDB操作在可重复度事务隔离级别,在这个案例,InnoDB使用next-key为查找和索引扫描锁定,防止phantom(幻影)行的出现。
事务数据为一个next-key锁展现到跟随在下面语句的输出:

mysql锁之Next-Key Locks的更多相关文章
- mysql锁
锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数 ...
- MySQL锁系列3 MDL锁
http://www.cnblogs.com/xpchild/p/3790139.html MySQL为了保护数据字典元数据,使用了metadata lock,即MDL锁,保证在并发的情况下,结构 ...
- mysql锁机制详解
前言 大概几个月之前项目中用到事务,需要保证数据的强一致性,期间也用到了mysql的锁,但当时对mysql的锁机制只是管中窥豹,所以本文打算总结一下mysql的锁机制. 本文主要论述关于mysql锁机 ...
- 深入理解 MySQL ——锁、事务与并发控制
本文首发于vivo互联网技术微信公众号 mp.weixin.qq.com/s/JFSDqI5ya… 作者:张硕 本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结, ...
- MySQL锁(行锁、表锁、页锁、乐观锁、悲观锁等)
锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或县城并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一 ...
- MYsql 锁详解 锁 与索引的关系
原文:http://blog.csdn.net/xifeijian/article/details/20313977#t10 mysql innodb的锁是通过锁索引来实现的. select ...
- [转帖]2019-03-26 发布 深入理解 MySQL ——锁、事务与并发控制
深入理解 MySQL ——锁.事务与并发控制 https://segmentfault.com/a/1190000018658828 太长了 没看完.. 数据库 并发 mysql 639 次阅读 ...
- 再谈mysql锁机制及原理—锁的诠释
加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更 ...
- [转帖]深入理解 MySQL—锁、事务与并发控制
深入理解 MySQL—锁.事务与并发控制 http://www.itpub.net/2019/04/28/1723/ 跟oracle也类似 其实所有的数据库都有相同的机制.. 学习了机制才能够更好的工 ...
- MySQL 锁(完整版)
目录 锁总览 锁的作用 加锁流程 锁对数据库的影响 锁等待 死锁 锁类型 锁范围 锁方式 全局锁 全局读锁 全局QC锁 QC锁存在的问题: 备份锁 backup lock MDL锁 MDL锁类型 MD ...
随机推荐
- os包方法
os包中实现了平台无关的接口,设计向Unix风格,但是错误处理是go风格,当os包使用时,如果失败之后返回错误类型而不是错误数量. os包中函数设计方式和Unix类似,下面来看一下. func Chd ...
- [翻译]PostCSS简介
许多开发人员花时间在使用CSS的预处理器上如less,sass和stylus.这些工具已经成为Web开发的重要组成部分.写一个网站的样式,不使用嵌套,变量或混入等功能很少见.它们每个都是非常实用的,让 ...
- Android 6.0中在/dev下添加新设备驱动下Selinux相关设置【转】
本文转载自:https://blog.csdn.net/fantasy_wxe/article/details/52013922 错误1: 07-23 13:06:57.617 117 117 ...
- gulp前端构建工具的搭建
我的机器: 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 1 ...
- gcm 被微信弃用的原因
作者:feng xixi链接:https://www.zhihu.com/question/21514839/answer/18496706来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- 大家来聊聊如何PASS 360
真正做到PASS 360,启动项什么的.我觉得还是有可能的把? 虽然它就是一个流氓,但是我们要想办法比它更流氓. 只是有一个点:那就是行为监控,那既然行为监控(云分析抛开).那就找一个可信任的程序来调 ...
- Git 更改远程地址
查看远程地址 git remote -v 更换远程地址 git remote set-url origin 新的地址 更换之后可以查看一下 这个非常实用. 通常我们把gitlab服务器更换的时候,对应 ...
- 手把手教你用Vue2+webpack+node开发一个H5 app
手把手教你用Vue2+webpack+node开发一个H5 app 前一篇vue2 + webpack + node 开发一个小demo说到了用vue的一些基本用法,这一篇就讲一个复杂一点的更完整的 ...
- Java class、Object、Class 的区别
Java的对象模型中: 所有的类都是Class类的实例,Object是类,那么Object也是Class类的一个实例. 所有的类都最终继承自Object类,Class是类,那么Class也继承自Obj ...
- Referenced file contains errors (http://www.springframework.org/schema/aop/spring-aop-3.0.xsd). For more information, right click on the message in th
XML code<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC &q ...