mysql物理日志和逻辑日志_mysql系列之更新语句的底层逻辑

概述

本文将从一条简单的单表更新sql出发,探析mysql执行更新sql的底层实现逻辑。

mysql基本架构

e3ac97404d8250c6f1241235143aa0c0.png上图就是Mysql的逻辑架构图。大体来说,MySQL可以分为Server层和存储引擎层两部分。

Server层 包括连接器、查询缓存、分析器、优化器、执行器等,涵盖mysql绝大多数的核心功能。

存储引擎层 负责数据的存储和提取。mysql支持InnoDB、MyISAM、Memory等多个存储引擎。从mySQL 5.5.5版本开始,InnoDB成为了mysql的默认存储引擎。

mysql更新语句执行流程

假设有如下简单的表T:

现在要将ID=2这一行的值加1:

我们现在就通过这条简单的更新语句来探析mysql更新语句的底层实现逻辑。之前我们在mysql系列之查询语句的底层逻辑 文章中已经介绍了查询语句的基本执行链路。之前查询语句经过的流程,更新语句也会经过。所不同的是:

执行更新操作时,会使这个表的所有查询缓存失效,这也就是不建议使用查询缓存的原因。

更新流程还涉及到两个重要的日志模块:redo log(重做日志) 和 binlong(归档日志)日志。

下面我们就来介绍这两个日志模块。

日志模块:redo log

作用

当有一条记录需要更新时,InnoDB引擎会将记录写到redo log日志中,写的是物理日志,并更新内存,这时候更新操作就完成了。当

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值