初识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,至此数据更新完成。

猜你喜欢

转载自www.cnblogs.com/ITyannic/p/12235299.html