MYSQL--一条SQL更新语句是如何执行的?

输入一条更新语句,例如:update user set c=c+1 where  ID=1

具体执行流程与查询语句类似,详情请点击:https://mp.csdn.net/console/editor/html/105358656

流程走到执行器时,涉及两个重要的日志模块,redo  log(重做日志)  binlog(归档日志)

redo log:

现在有一个酒馆,喝酒的人来酒馆喝酒,因为大家都是熟人,所以可以赊账,现在有一个小黑板,当有顾客赊账或者清账赊账时,老板就把记录记在黑板上,但是黑板终究地方有限,当赊账清账的人变多时,就写不下了,老板肯定还有自己的一个账本用来记录,将黑板上的记录挪到账本上。

所以平常有人赊账清账时,老板有两个选择,要么写到黑板上,之后将记录挪到账本上。要么将记录直接写到账本上,但是账本上有很多记录,老板在登记时可能来不及翻找那么多的记录,所以他一般先写到黑板上,不忙的时候再挪到账本(一般是打烊的时候再挪)。

黑板和账本配合的这个过程就是MYSQL中经常说到的WAL技术,全称是Write-Ahead- Logging,关键点就是先写日志,再写磁盘

redo log就相当于这个黑板,他是InnoDB中独有的。

redo log是固定大小的,他类似于一个圈,和循环队列类似,圈里面设立一个当前记录位置write pos,一个checkpoint是需要清除的位置,当有新纪录时,write pos继续向下走,当需要清除时,checkpoint向下走,write pos与checkpoint中间的部分就是redo log中空余的部分。

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

比如老板有事几天不开门,之后可以通过账本和黑板上的数据明确账目。

binlog:

MYSQL自带的引擎是MYLSAM,他的日志是binlog,但是binlog没有crash-safe功能,只有归档功能。

两种日志有以下区别:

1. redo log是innoDB引擎特有的,binlog是MYSQL的Server层实现的,所有引擎都可以使用。

2. redo log是物理日志,记录的是“在某个数据页上做出什么修改”,binlog是逻辑日志,记录sql语句。

3. redo log是循环写的,空间固定。binlog是可以追加写入的,追加的意思是binlog写到一定大小会切换到下一个,不会覆盖以前的日志。

因此执行器和innoDB执行sql语句的流程如下:

1.执行器先找ID=10这一行,如果内存中有,就返回给执行器,如果没有,就从磁盘读入主存,然后再返回。

2.执行器把c这个变量加上1

3.引擎将这行数据更新到内存中,记录更新到redo log中,redo log此时处于prepare状态,告诉执行器可以提交了。

4.执行器生成这个操作的binlog,把binlog写入磁盘。

5.提交事务,将redo log改成commit状态,更新完成。

步骤3--5,就是两阶段提交。

 

怎么让数据库恢复到半月内任意一秒呢?

binlog会记录所有的逻辑操作,会有数据库备份。

如果要找回数据,比如找回今天中午十二点的数据,首先,先找回最近的一次全量备份,如果运气好,可能就是前一天的备份,从这个备份恢复到临时库。然后,从备份的时间点开始,将备份中的binlog依次取出,直到删之前的那个时刻。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决AI大难题:如何降低AI运行对能源的消耗?

来源:The Next Web作者:Jeannie Finks编译:科技行者就当下来看,AI领域实现突破性进展的深度学习模型,其规模越大,能耗和成本也随之增加。自然语言处理模型GPT-3就是个典型的例子,为了能够在准确…

STM32F105 PA9/OTG_FS_VBUS Issues

https://www.cnblogs.com/shangdawei/p/3264724.html F105 DFU模式下PA9引脚用来检测USB线缆,若电平在2.7~5v则认为插入usb设备(检测到usb线缆条件满足),接下来按流程图执行。 转载于:https://www.cnblogs.com/prayer521/p/970349…

Facebook最新研究:配合AR眼镜使用的腕带,可将神经信号转化为动作

来源:X增强现实日前据外媒报道,Facebook基于其在2019年收购的初创公司的CTRL-Labs技术,计划提供一个新的增强现实界面。在发布的一段演示视频中,其展示了使用肌电信号(EMG)将细微的神经信号转化为动作的&am…

MYSQL--事务隔离

你在银行存了100元,现在你要把100元转给用户A,银行一查你还有钱,开始给A转钱,这时,转钱给A的操作还未完成,你又把钱转给B,银行一看,你银行账号还有钱,就又给B转钱。那乱套…

数据库原理

一、事务 概念ACIDAUTOCOMMIT二、并发一致性问题 丢失修改读脏数据不可重复读幻影读三、封锁 封锁粒度封锁类型封锁协议MySQL 隐式与显示锁定四、隔离级别 未提交读(READ UNCOMMITTED)提交读(READ COMMITTED)可重复读(…

Nature封面:人类还在看提词器,AI的辩论能力却出现了重大进展

来源:机器之心编辑:魔王、陈萍人类斗嘴还要看提词器,AI 引经据典的能力却已经比你高出不止一个段位了。在人工智能打败专业国际象棋选手、围棋选手,并在多个电子游戏中大展身手之后,现在它冲着职业辩论选手来了&#x…

MYSQL--浅析索引

索引是为了提高数据查询的效率,类似于书的目录。 索引的常见模型有三种: 1.哈希表: 只适用于等值查询,不适用于范围查询 为什么呢? 哈希表是(key,value)的格式存储,…

HDU Integer's Power(容斥原理)

题意 求[l,r]的最大指数和&#xff08;1<l,r<10^18&#xff09; 最大指数和&#xff08;如648^24^32^6,所以64的最大指数和是6&#xff09; 题解 很明显我们可以先求出[1,n]的最大指数和&#xff0c;然后再作差。 我们可以先求出num[i]代表[1,n]中最大指数为i的数有多少个…

人工智能姿态逐渐“亲民”,2021年AI五大趋势备受期待

来源&#xff1a;齐鲁壹点人工智能(AI)已成为多国科技发展领域的“香饽饽”&#xff0c;各国政府以及多家大企业也都不甘示弱&#xff0c;争相砸重金支持该领域的发展&#xff0c;各种创新因此如雨后春笋般喷薄而出。此外&#xff0c;新冠肺炎疫情的肆虐迫使我们进一步加大对于…

MYSQL--三种锁

数据库锁设计的初衷是处理并发问题。作为多用户共享的资源&#xff0c;当出现并发访问的时候&#xff0c;数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围&#xff0c;MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。…

网络请求过程示例

1.域名解析&#xff1a;在客户端&#xff08;浏览器&#xff09;输入http://www.baidu.com&#xff0c;通过DNS解析到该域名对应的IP地址为220.181.27.48 2.数据包通过链路层发送到路由器&#xff0c;通过邻居协议(ARP协议)查找给定IP地址的MAC地址 3.TCP三次握手建立端到端的连…

行业观察 | 全球IoT云平台第一股诞生,IoT离爆发还有多远?

来源&#xff1a; 财经杂志文 &#xff1a;施然2021年3月18日&#xff0c;IoT云平台公司Tuya&#xff08;涂鸦智能&#xff09;上市&#xff0c;这也是目前全球范围内IoT云平台第一股。Tuya的云敲钟仪式在杭州举办&#xff0c;共同参与云敲钟仪式的&#xff0c;除了Tuya的高管团…

Leetcode--23.合并K个排序链表(Java)

合并 k 个排序链表&#xff0c;返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 思路&#xff1a;分治法 多个链表&#xff0c;两两合并&#xff0c;第…

SQL2012 之 创建备份计划

打开数据库&#xff0c;选择 管理 → 右键维护计划→选择新建维护计划&#xff0c;填写计划名称&#xff0c;如下图&#xff1a; 修改维护计划参数&#xff0c;如下图&#xff1a; 工具箱->备份数据库任务&#xff0c;拖到计划里&#xff0c;如下图&#xff1a; 编辑“备份数…

薛其坤院士对话马斯克:下一个颠覆性创新是什么?

来源&#xff1a;网易科技报道文&#xff1a;丁广胜他来了&#xff0c;他又来了&#xff0c;马斯克这次在家中远程视频参会中国发展高层论坛。这次很遗憾&#xff0c;马斯克不能现场展示“动感舞蹈”了。他谈到了自动驾驶&#xff0c;也谈到了星际探索。薛其坤院士谈到了太阳能…

redis的底层数据结构

redis:一个key-value系统 Redis 与其他 key - value 缓存产品相比有以下三个特点&#xff1a; Redis支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据&#xff0c;同时还提…

「九章」量子计算优越性遭北大院士质疑,潘建伟陆朝阳长文回应

来源&#xff1a; 雷锋网作者&#xff1a;付静对量子计算和玻色取样的专业概念的理解存在偏差&#xff0c;或是「九章」受质疑的原因。2020 年 12 月 4 日&#xff0c;我国成功达到量子计算研究第一个里程碑量子计算优越性&#xff08;Quantum Computational Advantage&#xf…

Leetcode--542. 01 矩阵(java)

给定一个由 0 和 1 组成的矩阵&#xff0c;找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 示例 2: 输入: 0 0 0 0 1 0 1 1 1 输出: 0 0 0 0 1 0 1 2 1 注意: 给定矩阵的元素个数不超过 10000。…

OpenAI又放大招:连接文本与图像的CLIP,在ImageNet上效果媲美ResNet50

来源&#xff1a;AI科技评论公众号编译&#xff1a;蒋宝尚、陈彩娴2020年&#xff0c;通用模型产生了经济价值&#xff0c;特别是GPT-3&#xff0c;它的出现证明了大型语言模型具有惊人的语言能力&#xff0c;并且在执行其他任务方面也毫不逊色。2021年&#xff0c;OpenAI 联合…

[COCI2017-2018#1] Plahte

题面很长&#xff0c;可往往真正有用的题意却没有这么长&#xff0c;例如说这么一句&#xff1a; 床单放在上面&#xff0c;使它们之间角或边不会互相接触&#xff0c; 边也不会相交&#xff0c;但他可能把较小的床单放在大的上面&#xff0c;或者一个完全覆盖另个。 从这句话中…