前言
很多人在谈起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
查看评论