码迷,mamicode.com
首页 > 数据库 > 详细

初识mysql的innodb存储引擎

时间:2020-01-27 09:31:21      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:undo   alt   log   bsp   binlog   inno   图片   更新   硬盘   

  上一篇讲到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,至此数据更新完成。

技术图片

 

初识mysql的innodb存储引擎

标签:undo   alt   log   bsp   binlog   inno   图片   更新   硬盘   

原文地址:https://www.cnblogs.com/ITyannic/p/12235299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!