联系上文SQL查询语句的执行

查询语句的那一套流程,更新语句也是同样会走一遍。

更新流程还涉及两个重要的日志模块:

redo log(重做日志)和 binlog(归档日志)

redo log:重做日志

redo log是InnoDB引擎特有的日志

WAL技术,全称是Write-Ahead Logging

它的关键点就是先写日志,再写磁盘。

具体来说,当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log里,并更新内存,此时更新就算完成了。

同时,InnoDB引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做。

write pos是当前记录的位置,一边写一边后移,写到末尾再从头开始。

checkpoint是当前要擦除的位置,擦除记录前要把记录更新到数据文件。

InnoDB就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe

binlog:归档日志

Server层也有自己的日志,称为binlog(归档日志)

两种日志的区别

  • redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现的,所有引擎都可以使用。
  • redo log是物理日志,记录的是“数据页具体的修改”。binlog是逻辑日志,记录语句的原始逻辑(语句)
  • redo log是循环写的,空间固定会用完。binlog是可以追加写入的

prepare和commit,这就是"两阶段提交"。主要是用来保证一致性

1.prepare阶段,记录修改到redo log

2.真正的提交commit需要binlog成功之后。

3.如果binlog未开始或者不完整,事务会回滚。

SQL更新语句的执行的更多相关文章

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

    文章首发于公众号「蝉沐风」,认真写好每一篇文章,欢迎大家关注交流 这是图解MySQL的第2篇文章,这篇文章会通过一条SQL更新语句的执行流程让大家清楚地明白: 什么是InnoDB页?缓存页又是什么?为 ...

  2. mysql实战45讲读书笔记(二) 一条SQL更新语句是如何执行的 极客时间

    前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块.相信你还记得,一条查询语句的执行过程一般是经过连接器.分析器.优化器.执行器等功能模块,最后到达存储引擎. 那么,一条更新语 ...

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

    前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块.相信你还记得,一条查询语句的执行过程一般是经过连接器.分析器.优化器.执行器等功能模块,最后到达存储引擎. 那么,一条更新语 ...

  4. 2 日志系统:一条sql更新语句是如何执行的?

    2 日志系统:一条sql更新语句是如何执行的? 前面了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块,一条查询语句的执行过程一般是经过连接器.分析器.优化器.执行器等功能模块,最后达到e ...

  5. 02 | 日志系统:一条SQL更新语句是如何执行的? 学习记录

    <MySQL实战45讲>02 | 日志系统:一条SQL更新语句是如何执行的? 学习记录http://naotu.baidu.com/file/ad320c7a0e031c2d6db7b5a ...

  6. MySQL 笔记整理(2) --日志系统,一条SQL查询语句如何执行

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 2) --日志系统,一条SQL查询语句如何执行 MySQL可以恢复到半个月内任意一秒的状态,它的实现和日志系统有关.上一篇中记录了一 ...

  7. MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行

    最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 ...

  8. 1 基础架构:一条sql查询语句如何执行?

    1 基础架构:一条sql查询语句如何执行? 分析一个最简单的查询 mysql> select * from T where ID=10: MySQL基本架构示意图 大体来说,mysql可以分为s ...

  9. MySQL笔记(6)-- SQL更新语句日志系统流程

    一.背景 在上一篇[MySQL笔记(5)-- SQL执行流程,MySQL体系结构]中讲述了select查询语句在MySQL体系中的运行流程,从连接器开始,到分析器.优化器.执行器等,最后到达存储引擎. ...

随机推荐

  1. 小白月赛22 A : 操作序列

    A:操作序列 析题得说: 考察点 : 模拟,STL库容器的使用 坑点 : 区间不要搞丢东西 难点 : 这个题比较变态的是我们不知道每次输入每行是一个数还是两个数,就需要进行判断, 怎么判断呢?用 sc ...

  2. IDEA科学使用

    今天莫名激活码又用不起了有能力的支持正版吧 ,要用的时候又去网上到处找然后发现各种用不了,去淘宝又怕被骗博主就是过来人 ,总算下定决心写一篇一劳永逸的方法.. 方法一:合理使用激活码 用过idea的都 ...

  3. source insight增加tab标签页的方法之sihook

    1.效果如下 2.方法见如下博客 http://www.cnblogs.com/Red_angelX/archive/2013/01/23/2873603.html

  4. jenkins - docker搭建jenkins

    jenkins镜像拉取 docker pull jenkins/jenkins 为jenkins镜像分配容器 docker run -d --name jenkins \ -p 8080:8080 \ ...

  5. Vue前端挂载对象时一些思考

    最近,在Vue前端调试http请求,无论如何如何也是拦截不了某些http请求.场景是这样的:Java后端组装好Vue对象,然后送到前端,前端通过id来挂载该Vue对象,而该对象中有上传文件或者图片的控 ...

  6. vjudge A Funny Game 思维题 (其实今天讲的全是数学。。。)

    原文链接https://vjudge.net/contest/331993#problem/H Alice and Bob decide to play a funny game. At the be ...

  7. 杭电oj_2058——The sum problem(java实现)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2058 思路:等差数列公式变形:sum = a1 * len + len *(len -1)/2 抽象成 ...

  8. python笔记-01

    Python环境安装 1.Windows下一键环境安装包 2.Python2.X与Python3.X 什么是代码? 代码是现实世界事物在计算机世界中的映射 什么是写代码? 写代码是将现实世界中的事物用 ...

  9. FJUTOJ-3682 LRU算法的实现2 (链表+哈希)

    传送门 此题让我们实现一个LRU的模板类.本题较简便且高效的写法是维护一个std::list和一个std::unordered_map. std::list 与 std::unordered_map ...

  10. STM 32 内部功能回顾

    EXTI   外部中断 NVIC 嵌套的向量式中断控制器 AHB 是高级高性能内部总线,主要是用在CPU.DMA.DSP(数字信号处理) APB 是外围总线,I2C. 串口 APB 分为高速APB2( ...