• 技术文章 >数据库 >MySQL

    mysql中InnoDB的MVCC实现

    小妮浅浅小妮浅浅2021-09-15 09:28:39原创160

    1、InnoDB的MVCC是通过在每行记录后面保存两个隐藏的列来实现的。

    这两个列,一个保存了银行的事务ID,一个保存了银行的回滚指针。

    2、每次开始新的事务,都会自动增加新的事务id。

    事务开始时,事务id会被放置在当前事务影响的交易id中。查询时,需要比较当前事务id和每行记录的交易id。

    实例

    假如有个事务开始于 update 之后 delete 之前,且结束于 delete 之后,如下:

    start transaction;  //假如事务 id = 2.5
    select * from test; //执行时间在 update 之后 delete 之前
    select * from test; //执行时间在 delete 之后
    commit;

    如果不使用 MVCC 第一条 select * from test 能读到 1 条记录,而 第二条将读取到 0 条记录,同一事务中多次 select 范围查询读取到的记录不一致即幻读。而使用 MVVC 之后,两条select 语句读取到的记录相同。

    以上就是mysql中InnoDB的MVCC实现,希望对大家有所帮助。更多mysql学习指路:MySQL

    推荐操作系统:windows7系统、mysql5.8、DELL G3电脑

    专题推荐:mysql innodb mvcc
    品易云
    上一篇:mysql自增主键用完的处理办法 下一篇:mysql中undo log的两种类型

    相关文章推荐

    • mysql直方图是什么• mysql组复制是什么• mysql组复制的工作原理• mysql组复制有什么特点• mysql组复制的应用场景• mysql如何启动组复制• mysql组复制有哪些用处• mysql视图view的特点• mysql修改视图的方法• mysql视图如何使用• mysql存储过程的特点• mysql错误日志是什么• mysql自增值保存的位置• mysql自增值如何修改• mysql自增主键用完的处理办法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网