标签:mysql
innodb 也实现了mvcc ,
对于非锁定行读取 即非DML读取,也可以成为快照读取。
在一个事物中 ,事物开始的时候 ,会被分配一个全局的事物id,即把当前系统版本号作为当前事物的事物id,
这个当前系统版本号 会 随着 因事物的开启,和数据的dml 操作而递增。
而表的 每一行 也有两个版本号,一个是创建时间,一个是删除时间,也是系统版本号。
innodb 在读取的时候,只会读取 早于 或者等于该事物版本号的 行记录, 这有一个条件 就是 非锁定行读取, 就是平常的 select * from table,
而对于其他的 锁定行 dml读取 只会读取最新的数据行版本,
insert update delete 是锁定行读取。
总结 快照读取 只会读取 早于等于自己事物版本号的 行记录。
做个栗子
本文出自 “JAVA那些事儿” 博客,请务必保留此出处http://1027187712.blog.51cto.com/5509347/1743457
标签:mysql
原文地址:http://1027187712.blog.51cto.com/5509347/1743457