zoukankan      html  css  js  c++  java
  • 学习高性能mysql

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Codeforces Round #541 (Div. 2) D 并查集 + 拓扑排序
    Educational Codeforces Round 60 D dp + 矩阵快速幂
    Educational Codeforces Round 60 C 思维 + 二分
    Codeforces Round #544 (Div. 3) dp + 双指针
    Codeforces Round #542(Div. 2) CDE 思维场
    UVA
    UVA
    UVA
    UVA
    UVA
  • 原文地址:https://www.cnblogs.com/zhangzhijian/p/10789604.html
Copyright © 2011-2022 走看看