当前位置: 首页 > news >正文

MySQL更新数据流程

1.mysql三种重要日志

redo log(重做日志):存在于引擎层,物理存储,通过设置innodb_flush_log_at_trx_xommit=1 让其持久化到磁盘,保证引擎的crash-safe能力,遵从WAL技术(Write-Ahead Logging),存放方式为指定大小循环存储,存储时通过写指针(write pos)和擦拭指针(check point)来控制,存放内容为“在某个数据页做了什么操作”,简单来说就是为了保证数据准确,场景:系统崩溃了,可以找回

bin log(归档日志):存在server层,物理存储,通过设置sync_binlog=1让其持久化到磁盘,与引擎无关,存放方式为叠加,不会覆盖,存储内容包括两部分:存储sql,存储数据前后变动,在数据备份以及回复中,用得多,简单来说是为了备份数据,场景:数据还原,先备份到指定时间点的数据,再根据binlog恢复

undo log(回滚日志):该日志主要是用于事务执行失败时进行回滚操作,同时也是用于MVCC中对数据的历史版本进行查看

 

2.先贴图

sql:

update test set c = c + 1 where id = 2;

3.执行流程

  • 执行器从引擎层查询id=2的数据
  • 引擎层先从内存中查询是否存在,如果不存在则从磁盘中加载返回
  • 执行器对c字段进行+1后,调用引擎层进行写入
  • 引擎层更新内存数据,同时写入redo log,并且设置redo log状态为prepare
  • 通知执行器写入bin log ,写入后通知引擎层
  • 引擎层提交事务,修改redo log状态为commit

4.疑问

  -> 为什么redo log需要两种状态(两段提交)?

        防止数据存储时,其中写入redo log或者bin log时系统崩溃,导致两端数据不一致,双重确认有利于保存数据一致性。

举个例子:在写入redo log后,还没写入bin log,这个时候系统崩溃重启了,这个时候bin log就会缺少该操作的日志,从而导致数据不一致,两者调换也一样.

相关文章:

MySQL更新数据流程

1.mysql三种重要日志 redo log(重做日志):存在于引擎层,物理存储,通过设置innodb_flush_log_at_trx_xommit1 让其持久化到磁盘,保证引擎的crash-safe能力,遵从WAL技术(Write-Ahead …...

测试开发进阶系列课程

测试开发系列课程1.完善程序思维--------案列:图书管理系统的创建**(一)图书管理系统的创建**1.完善程序思维--------案列:图书管理系统的创建 (一)图书管理系统的创建 1.在main中写入主函数,…...

Qt源码阅读(三) 对象树管理

对象树管理 个人经验总结,如有错误或遗漏,欢迎各位大佬指正 😃 文章目录对象树管理设置父对象的作用设置父对象(setParent)完整源码片段分析对象的删除夹带私货时间设置父对象的作用 众所周知,Qt中,有为对象设置父对象…...

【Python入门第四十二天】Python丨NumPy 数组裁切

裁切数组 python 中裁切的意思是将元素从一个给定的索引带到另一个给定的索引。 我们像这样传递切片而不是索引:[start:end]。 我们还可以定义步长,如下所示:[start:end:step]。 如果我们不传递 start&…...

Anaconda配置Python新版本tensorflow库(CPU、GPU通用)的方法

本文介绍在Anaconda环境中,下载并配置Python中机器学习、深度学习常用的新版tensorflow库的方法。 在之前的两篇文章基于Python TensorFlow Estimator的深度学习回归与分类代码——DNNRegressor(https://blog.csdn.net/zhebushibiaoshifu/article/detail…...

加载模型时出现 OSError: Unable to load weights from pytorch checkpoint file 报错的解决

加载模型时出现 OSError: Unable to load weights from pytorch checkpoint file 报错的解决报错信息原因查明网传解决措施好消息我的解决措施报错信息 查了下,在网上还是个比较常见的报错 一般为加载某模型时突然报错 原因查明 一般为下载某个 XXX_model.bin 的…...

sessionStorage , localStorage 和cookie的区别

一.sessionStorage(临时存储)sessionStorage是HTML5中新增的Web Storage API之一,用于在浏览器中存储键值对数据,与localStorage类似,但是sessionStorage存储的数据在会话结束时会被清除。可以通过以下方式使用sessionStorage:存储…...

C# 实例详解委托之Func、Action、delegate

委托是.NET编程的精髓之一,在日常编程中经常用到,在C#中实现委托主要有Func、Action、delegate三种方式,这个文章主要就这三种委托的用法通过实例展开讲解。 【Func】:Func是带返回值的委托: 原型函数如下(以下展示的…...

如何选电脑

1、CPU(中央处理器) 怎么看CPU型号:CPU:系列-代数等级核心显卡型号电压后缀 例如CPU:i7-10750H : 1、系列:Intel的酷睿i3、i5、i7、i9这四个系列的CPU,数字越大就代表越高端。 2、代数:代表…...

SpringBoot项目创建

如果使用spring的源地址创建项目失败,就使用 阿里云的springBoot项目创建地址:https://start.aliyun.com/ 1.new 一个新的项目: 2.选择合适的版本java的JDK和maven项目 3.选择spring web依赖 4.直接finish 5. 删除无用的包,然后…...

神经衰弱该如何判断?确诊为神经衰弱,日常要做好这7大护理!

神经衰弱是由于长时间处于紧张或者压力的情况下导致精神出现兴奋或者疲乏现象而伴随着一系列症状。如情绪烦恼、容易激怒、睡眠障碍、肌肉出现紧张性疼痛等,生活中有很多人在自己的不到休息或者遇到强大打击时就会嘲笑自己患上神经衰弱。甚至一些会盲目采取措施&…...

Linux之进程替换

进程替换1.什么是进程替换2.替换函数2.1 execl函数2.2 execv函数2.3 execlp函数2.4 execvp函数2.5 在自己的C程序上如何运行其他语言的程序?2.6 execle 函数2.7 小结3.一个简易的shell1.什么是进程替换 fork()之后,父子各自执行父进程代码的一部分&…...

关于清除浮动

浮动最早是用来做图文排版,为了让块级元素同行显示,而html中块元素是有自己的排列规则,一般独占一行。所以有了浮动元素,一旦元素浮动了就会脱离文档流,产生问题。怎么去清除浮动:(1&#xff09…...

Uber H3 index 地图索引思考

H3 是 uber 设计的六边形空间索引,go 语言操作包是 h3-go,可以通过经纬度获取所在的 h3 六边形边界,每个经纬度对应的六边形都是确定的,每个六边形唯一对应了一个 h3index。在业务开发中,我们可以通过 h3index 来对地理…...

多线程的几种状态

Java-多线程的几种状态🔎1.NEW( 系统中线程还未创建,只是有个Thread对象)🔎2.RUNNABLE( (就绪状态. 又可以分成正在工作中和即将开始工作)🔎3.TERMINATED(系统中的线程已经执行完了,Thread对象还在)🔎4.TIMED_WAITING(指定时间等待…...

【算法题】1574. 删除最短的子数组使剩余数组有序

题目: 给你一个整数数组 arr ,请你删除一个子数组(可以为空),使得 arr 中剩下的元素是 非递减 的。 一个子数组指的是原数组中连续的一个子序列。 请你返回满足题目要求的最短子数组的长度。 示例 1: …...

理解对数——金融问题中的自然对数(以e为底的对数)

第3章 金融问题(Financial Matters)——金融问题中的自然对数If thou lend moneyto any ofMy people. ...thou shalt not beto him as a creditor;neither shall yelay upon him interest.(如果你借钱给我的任何人。 ……你不应该是他的债权人;也不可向他加息。)——…...

vue2进阶学习之路

HTML、CSS和JavaScript基础 在学习Vue2之前,需要掌握HTML、CSS和JavaScript的基础知识。包括HTML的标签、CSS的布局和样式、JavaScript的变量类型、条件语句、循环语句等。 Vue2的基础知识 掌握Vue2的基本概念和语法,包括Vue2实例、数据绑定、指令、组件…...

决策树ID3算法

1. 决策树ID3算法的信息论基础 机器学习算法其实很古老,作为一个码农经常会不停的敲if, else if, else,其实就已经在用到决策树的思想了。只是你有没有想过,有这么多条件,用哪个条件特征先做if,哪个条件特征后做if比较优呢&#…...

C++模板基础(一)

函数模板(一) ● 使用 template 关键字引入模板: template void fun(T) {…} – 函数模板的声明与定义 – typename 关键字可以替换为 class ,含义相同 – 函数模板中包含了两对参数:函数形参 / 实参;模板形…...

快速部署DDColor:本地环境搭建与老照片修复完整流程

快速部署DDColor:本地环境搭建与老照片修复完整流程 1. 引言:让黑白记忆重获新生 在数字影像技术高度发达的今天,我们随手就能拍摄高清彩色照片。但那些承载着家族记忆和历史瞬间的黑白老照片,却因为技术限制而失去了色彩的温度…...

cv_resnet18_ocr-detection新手入门:3步完成图片文字识别

cv_resnet18_ocr-detection新手入门:3步完成图片文字识别 1. 引言:为什么选择这个OCR文字检测模型 在日常工作和生活中,我们经常需要从图片中提取文字信息。无论是扫描的文档、手机拍摄的截图,还是网上下载的图片,手…...

OpenOCD入门到精通:第30章 综合实战:安全调试与逆向分析

第30章 综合实战:安全调试与逆向分析 导读:在嵌入式安全研究领域,JTAG/SWD 调试接口既是开发者的利器,也是安全研究人员的重要切入点。通过调试接口,可以探测芯片类型、读取固件内容、分析安全配置,甚至绕过某些保护机制。本章将围绕 OpenOCD 在合法授权安全研究场景中的…...

ubuntu20.04设置开机自动登录适用与GNOME桌面环境

默认arm版本ubuntu20.04未安装nano编辑器,so我们要安装一下, sudo apt update && sudo apt install nano设置方法: sudo nano /etc/gdm3/custom.conf添加或修改,用户名区分大小写。 AutomaticLoginEnableTrue AutomaticLo…...

昇腾算子开发知识地图

作者:昇腾实战派 背景 本博客旨在对社区发表的昇腾算子相关博客进行整理归类,方便用户导航使用;以下文章所用的机器均为昇腾相关设备。 Ascend C 基础理论 Ascend C基础 Ascend C算子开发详解:从原理到实战的深度剖析 深入A…...

基于构件的软件工程(CBSE)全面解析:从理论到实践

1 CBSE的历史背景与核心理念1.1 起源与发展历程基于构件的软件工程(Component-Based Software Engineering,CBSE)是20世纪90年代兴起的一种主流软件开发方法论。其核心思想源于软件复用的理念,即通过集成预制的独立功能单元&#…...

3分钟掌握Mermaid:用代码思维绘制专业图表的核心技巧

3分钟掌握Mermaid:用代码思维绘制专业图表的核心技巧 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器,支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程…...

如何让Windows 11运行如飞?Win11Debloat系统优化工具全解析

如何让Windows 11运行如飞?Win11Debloat系统优化工具全解析 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以简…...

基于Docker与Orthanc构建轻量级医学影像PACS系统实践

1. 为什么选择DockerOrthanc搭建PACS系统 第一次接触医学影像管理系统时,我被传统PACS的复杂部署流程吓到了——需要配置数据库、安装依赖库、调试网络参数,光是环境准备就要花上大半天。直到发现Orthanc这个宝藏工具,配合Docker容器化技术&a…...

Python金融计算效率翻倍的7个隐藏技巧:pandas加速300%、numba编译优化、向量化避坑指南

第一章:Python金融计算效率翻倍的底层逻辑与性能瓶颈诊断Python在金融量化分析中广泛应用,但其默认解释执行机制常导致大规模时间序列回测、蒙特卡洛模拟或协方差矩阵运算时出现显著延迟。效率瓶颈并非源于算法本身,而集中于CPython解释器的G…...