目录
- 一、MySQL引擎层BufferPool工作过程图解
- 二、MySQL引擎层BufferPool工作过程原理
一、MySQL引擎层BufferPool工作过程图解
-
图解
二、MySQL引擎层BufferPool工作过程原理
-
首先关闭自动提交,执行一条修改语句。
SET AUTOCOMMIT =0; update employees set name='张三' where id=1:
-
客户端连接mysql服务层,再由服务层的执行器去调用innoDB引擎,首先会去innoDB引擎的BufferPool中查看id=1的数据有没有在BufferPool中进行缓存,
-
如果有,则直接更新BufferPool中的缓存,
-
如果没有,则去磁盘.idb文件中去加载id=1的数据,根据索引找到id=1的数据页,找到数据页后,把整个数据页缓存在BufferPool中,从而针对id=1的数据进行修改。把修改之前的数据存放到Undolog中来进行备份,为后续的数据回滚、事务隔离相关的操作。
-
更新完数据后,BufferPool中的页成为脏页,因为此时BufferPool中id=1的数据跟磁盘文件id=1的数据它们的name属性的值已经不一致了。
-
此时需要将脏页的数据进行提交,同步到磁盘文件中,然后才会恢复到正常页。
COMMIT;