在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。

  • 优美的音乐节奏带你浏览这个效果的编码过程
  • 坚持每一天,是每个有理想青年的追求
  • 追寻年轻人的脚步,也许你的答案就在这里
  • 如果你迷茫 不妨来瞅瞅这里

1 前言

如下所示,一条普通的更新语句

update tb_user set ranking='Y' where user_id='760'

当你点击执行这条查询指令时,你看到的结果是:

你知道发生了什么吗 ???

如下图所示是一条查询语句的执行过程点击这里查看详情

更新语句在执行过程中,也必然要走发上图所示的基本流程,

2 一条更新指令的执行过程

  • 第一步 执行器先找引擎取 user_id='760’这一行。这里的 user_id 是主键,引擎直接用树搜索找到这一行。如果 user_id=‘760’ 这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘 读入内存,然后再返回。
  • 第二步 执行器拿到引擎给的行数据,将这个对应的列的值进行修改,然后得到新的一行数据,再调用引擎接口写入这行新数据。
  • 第三步 引擎将这行新数据更新到内存中,同时将这个更新操作记录到 redo log日志中。
  • 第四步 执行器生成这个操作的 binlog,并把 binlog 写入磁盘。
  • 第五步 执行器调用引擎的提交事务接口,引擎把刚刚写入的 redo log 改成提交(commit)状
    态,更新完成。

3 MySql WAL 技术

3.1 redo log 日志

当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log日志中,并更新数据库操作引擎内存,然后当系统比较空闲的时候再更新到磁盘里面,这个过程可描述为WAL。

WAL 的全称 是 Write-Ahead Logging,关键点就是先写日志,再写磁盘。

redo log日志记录功能,使得 InnoDB 可以保证在数据库发生异常重启后,之前提交的记录都不会丢失,这个能力可称为crash-safe。

3.2 binlog 日志

MySQL 整体来看,包括两部分, 一部分是Service层:

另一部分是引擎层,负责存储相关的功能,redo log 是 InnoDB 数据存储引擎特有的日志,binlog 归档日志是Server层持有的日志。

3.3 redo log 日志 与 binlog 日志的不同

  • 持有对象不同,redo log 是InnoDB 持有,binlog是Server层持有
  • 作用不同,redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日 志,记录的是这个语句的原始逻辑,如这里的更新语句
  • redo log 是循环写入,binlog 是可以追加写入, binlog 文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。

完毕

不局限于思维,不局限语言限制,才是编程的最高境界。

以小编的性格,肯定是要录制一套视频的,随后会上传

有兴趣 你可以关注一下 西瓜视频 — 早起的年轻人

MySql 一条更新语句是如何执行的? MySql杂谈、MySql WAL 技术相关推荐

  1. mysql 计算近30天总金额_mysql┃一条更新语句是怎么执行的???

    本文共:3018字 预计阅读时间:8分钟 文章首发于我的微信公众号:哪儿来的moon,欢迎大家关注 mysql┃一条更新语句是怎么执行的??? 前言 通过上一篇文章的内容,大家已经对mysql的基本架 ...

  2. bat如何执行完上一条命令_一条更新语句是如何执行的?

    一条更新语句是如何执行的? 之前你可能经常听DBA同事说,MySQL可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢? 这个需要从一个表,一条更新语句说起. ...

  3. mysql更新一条语句_MySQL一条更新语句是如何执行的

    一条查询语句是经过连接器 分析器 优化器 执行器等功能模块,最后到达存储引擎. image 以下所说的都基于InnoDb引擎. 当有一条记录需要更新的时候,InnoDB引擎会先把记录写到redo lo ...

  4. mysql分句执行_《Mysql 一条 SQL 语句是如何执行的?》

    一:概述 - 首先需要认识一下 Mysql 整体的基础架构 - 二:Mysql 的分层 - MySQL 可以分为 Server 层和存储引擎层两部分 - Server 层 - Server 层包括连接 ...

  5. 一条更新语句是如何执行的

    执行 update tbl set c=c+1 where id =2 redo log 和 binlog redo log redolog 是InnoDB特有的 有了redo log,InnoDB就 ...

  6. mysql编写完怎么执行_面试官:一条MySQL更新语句是如何执行的?

    在面试中面试中如果被面试官问到在MySQL中一条更新语句是怎么执行的?,下面让我们来探究一下! 流程图 这是在网上找到的一张流程图,写的比较好,大家可以先看图,然后看详细阅读下面的各个步骤. 执行流程 ...

  7. 02 | 日志系统:一条 SQL 更新语句是如何执行的

      可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个 ...

  8. mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的

    前言 学习一个新知识最好的方式就是上官网,所以我先把官网贴出来 MySQL官网 (点击查阅),如果大家有想了解我没有说到的东西可以直接上官网看哈~目前 MySQL 最新大版本为8.0,但是鉴于目前应用 ...

  9. .sql文件如何执行_随手记 02 日志系统:一条SQL更新语句是如何执行的?

    上节系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的出合理模块. 连接器.分析器.优化器.执行器等功能模块,最后到达存储引擎. 一条SQL更新语句的执行流程 从一个表的一条sql语句说起 c ...

最新文章

  1. spring applicationContext.xml最全约束
  2. Android --- 两种设置字体加粗的方法
  3. 研究生期间应该如何充实度过
  4. 山东管理学院计算机专业在哪个校区,2019年山东管理学院新生在哪个校区及新生开学报到时间...
  5. 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享...
  6. Shiro与Springboot整合:配置依赖改造登录方法
  7. 用websocket技术开发的web聊天系统
  8. 用故事来给你讲负载均衡的原理
  9. 硬核干货!揭秘波士顿动力背后的专利技术
  10. 软件需求分析(补发)
  11. C语言笔记——一些小细节
  12. toMap函数 java.lang.IllegalStateException: Duplicate key 123 (attempted merging values 123 and 124)
  13. 小米路由固件中lua文件反编译
  14. WPF DataGrid MVVM 绑定 SelectedCells
  15. 毕设java 电脑配件购物商城论文
  16. C# 读写Excel
  17. APP——功耗测试(耗电测试)——adb命令复杂获取分析
  18. LeetCode笔记:526. Beautiful Arrangement
  19. cp强制覆盖与不覆盖拷贝方法
  20. 树状结构数据查询方法

热门文章

  1. 英伟达DALI加速技巧:让数据预处理速度比原生PyTorch快4倍
  2. 超全机器学习工程师成长路线图,GitHub已收获6400+Star!
  3. 怎么保存 html静态页面,静态页面怎么实现,就是把数据写入到html页面在缓存起来?...
  4. 重磅汇总!2015-2019学硕国家线走势情况!
  5. 《计算机应用基础》试卷,《计算机应用基础》试卷(二)
  6. 后缀的形容词_玩转英语词汇-词汇策略之形容词后缀
  7. python多任务-线程
  8. python社招面试_百度大牛总结十条Python面试题陷阱,看看你是否会中招
  9. oracle 源代码输出,oracle-如何将DBMS_OUTPUT.PUT_LINE的输出重定向到文件?
  10. linux 免密安装