码迷,mamicode.com
首页 > 数据库 > 详细

学习高性能mysql

时间:2019-04-29 12:55:47      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:更新   存储   select   事务   系统   定义   通过   innodb   创建   

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

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

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

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

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

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

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

 

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

 

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

学习高性能mysql

标签:更新   存储   select   事务   系统   定义   通过   innodb   创建   

原文地址:https://www.cnblogs.com/zhangzhijian/p/10789604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!