初识mysql的innodb存储引擎

  上一篇讲到sql提交到存储引擎了,由存储引擎操作内存或磁盘中的数据。

      

 

 

      这一篇就开始将接下来的innodb存储引擎是如何处理数据的。

      需要执行一条sql: update name=lisi where id =1;

 

      第一步:查询数据

      innodb首先需要定位到这条数据所在的位置,如果内存中有则直接定位,没有则需要到磁盘中查询出这一条数据,缓存到内存中。

      

 

 

 

        第二步:写入undo log日志

        查询到id=1这一行数据到name为zhangsan,将zhangsan这个旧值写入undo log日志中,以防后面回滚。

       

 

 

 

       第三步:更新内存中的数据

    直接更新内存中的数据,而不是硬盘中的数据。

   第四步:写入redo buffer

            将修改记录写入redo buffer中。

 

 

 

    第五步:写入redo log日志中

 准备提交事务,将redo buffer中的数据写入到redo log日志。

 

 

 

   第六步:写入binlog日志

 

     第七步:写入binlog

            这一步将binlog文件位置和commit标识写入redo log文件中,表示事务提交成功。

 

    第八步:写入磁盘文件

    磁盘中id=1的这条数据name还是zhangsan的,将磁盘数据改为我们修改后的数据lisi,至此数据更新完成。

 

posted @ 2020-01-27 00:22  东篱闲菊  阅读(122)  评论(0编辑  收藏  举报