Mysql 的InnoDB存储引擎实现的不是简单的行级锁,实现的是MVCC,多版本并发控制,可以理解成行级锁的一个变种。

InnoDB的MVCC是通过在每行纪录后面保存两个隐藏的列来实现的。
这两个列,一个是保存了行的创建时间,一个是保存了行的过期时间(删除时间),时间是用的系统的版本号来存储的。

在select时,InnoDB会根据两个条件组合检查每行纪录:

a、InnoDB只查找版本号小于等于当前事务版本号的数据行,这样可以确保这些读取的行,

要么是在这个事务开始前已经存在的,要么是在这个事务中插入或者修改过的。

b、行的删除行要么没定义,要么大于这个事务的版本号,这样可以确保事务读到的行,在事务开始之前未被删除。

只有同时满足这两个条件的数据行,才能作为返回的查询结果。

在Insert时,InnoDB为新插入的数据保存当前的版本号作为创建时间。

在Update时,InnoDB为更新这行数据的创建时间为当前版本号,同时保存当前版本号到 

最新文章

  1. prototype 和__proto__
  2. 基于webdriver的jmeter性能测试-通过jmeter实现jar录制脚本的性能测试
  3. C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}等等
  4. not use jquery
  5. Intel大坑之中的一个:丢失的SSE2 128bit/64bit 位移指令,马航MH370??
  6. asp.net SqlParameter关于Like的传参数无效问题
  7. git 配置用户名和邮箱
  8. python 生成排列、组合以及选择
  9. jersey post提交到 ContainerRequestFilter 而HttpServletRequest获取不到数据(转)
  10. C#字符串string的常用使用方法
  11. IE6 下 输入类型表单控件背景问题
  12. sql语句实现累计数
  13. java 数据类型间的转换
  14. 语音通信中终端上的时延(latency)及减小方法
  15. Zookeeper-基本概念
  16. js数据结构之集合的详细实现方法
  17. AM335x启动
  18. swift MD5 加密方法
  19. css 文本两行显示,超出省略号表示
  20. SPOJ Distinct Substrings【后缀数组】

热门文章

  1. Java-API:java.util.ArrayList
  2. 转:InnoDB多版本(MVCC)实现简要分析
  3. sql server实用要点全解
  4. C++深度解析教程学习笔记(1)C到C++的升级
  5. 安卓SQLite数据库操作(上)
  6. 今天出现编码出现了No suitable driver found for jdbc
  7. day70-oracle 12-触发器
  8. clearfix的用法(转)
  9. winform combobox绑定数据
  10. .NET回归 HTML----表单元素(1)和一些常用的标记