小言_互联网的博客

mysql mvcc 原理详解

363人阅读  评论(0)

前言

很多人在谈起mysql事务的时候都能很快的答出mysql的几种事务隔离级别,以及在各自隔离级别下产生的问题,但是一旦谈到为什么会产生这样的结果时会觉得难以回答,说到底,还是对底层的原理未做深入的探究,本篇将从较为底层的原理层面来聊聊关于mysql的mvcc原理,了解并掌握了mvcc原理,也就能真正回答这些问题了。

一、mysql 数据写入磁盘流程

在了解mvcc原理之前,先来看下面这种图,这是一张关于客户端发起一条update 数据的语句时,mysql 的innodb引擎所作的一些列操作过程(可按照前面的序列号);

从这张图,我们提取如下关键信息:

  • update 语句到达mysql的innodb引擎之后,并不是直接操作磁盘进行数据修改,而是先将磁盘数据load到buffer pool(如果没有的话);
  • buffer poo中update完成之后,并不是立即刷到磁盘,还需要将数据写到 undolog和redolog;
  • undolog记录了数据修改前的记录,redolog记录的是事务提交时数据页的物理修改;
  • 提交事务时,数据刷写到磁盘,同时把所有

转载:https://blog.csdn.net/zhangcongyi420/article/details/127471095
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场