数据库数据更新:从内存到磁盘,一步步揭开数据的神秘面纱!

news2024/11/26 17:37:33

大家好,我是小米!今天我要和大家分享一下数据库数据更新的流程。作为一名热衷于技术分享的小伙伴,我希望通过本篇文章,帮助大家更好地理解数据库数据更新的过程。废话不多说,让我们开始吧!

 

获取数据

在数据库的数据更新过程中,首先,执行器会从引擎中查找需要更新的数据。如果这些数据在内存中已经存在,那么执行器会直接返回它们。这是因为内存的读取速度非常快,可以快速响应查询请求,提高数据访问效率。但是,如果数据不在内存中,执行器就需要进行查询操作,从磁盘或其他存储介质中读取数据,然后将查询结果返回给执行器。

更改数据写入新数据

在拿到数据后,执行器会先对数据进行修改。例如,可以更新数据的某个字段、添加新的记录或者删除现有的记录。修改完成后,执行器会调用引擎接口,将修改后的数据重新写入数据库中。引擎接口会负责将数据写入对应的存储介质,如磁盘或者固态硬盘,以保证数据的持久性。

prepare阶段

当执行器调用引擎接口后,引擎会将数据更新到内存中,以提供更快的数据访问速度。同时,引擎还会将数据写入 redo log(重做日志)中。redo log 记录了数据库发生的每个修改操作,包括插入、更新和删除等,它起到了数据恢复的关键作用。在这个阶段,数据处于 prepare(准备)阶段,引擎会通知执行器操作已完成,可以随时对数据进行操作。

生成binlog

在数据更新过程中,执行器会生成 binlog(二进制日志)。binlog 记录了数据库的逻辑操作,如增删改等,它可以用于数据恢复、主从复制以及故障恢复等场景。执行器生成 binlog 的目的是为了保留数据修改的历史记录,以便后续需要进行数据恢复或者复制操作时使用。

commit阶段

当所有操作都执行完毕后,执行器会调用引擎的事务提交接口。引擎接收到提交请求后,将之前写入 redo log 的数据状态从 prepare 改成 commit,表示数据更新已完成。这个过程保证了数据的一致性和持久性,确保了事务的原子性。

二阶段提交

二阶段提交是一种保证分布式事务的一致性的协议。在分布式环境中,事务涉及多个节点,为了保证所有节点的数据操作能够一致地提交或者回滚,需要引入二阶段提交。它分为两个阶段:准备阶段和提交阶段。

  • 在准备阶段,各个参与者节点准备好提交的数据,并向协调者节点发送准备就绪的消息。
  • 在提交阶段,协调者节点向各个参与者节点发送提交请求,并等待参与者节点的响应。只有当所有参与者节点都准备就绪并响应提交请求时,协调者节点才会发出最终的提交指令。

redo log 的二阶段提交

在数据库数据更新过程中,redo log 也遵循二阶段提交的原则。

  • 为了保证数据的一致性和持久性,redo log 的写入操作先于 binlog。这样做的好处是,即使系统在写入 binlog 时出现异常,通过 redo log 的回滚操作,可以将数据库恢复到更新前的状态,避免数据丢失或损坏。redo log 的先写操作可以提供更高的事务安全性。
  • 与上述情况相反,有时也会先写入 binlog,再写入 redo log。这种方式可以在数据恢复和备份过程中提供更多的灵活性和选择性,但需要特别小心,确保在写入 binlog 后能够正确地将数据同步到 redo log,以保持数据的一致性。

总结

通过今天的分享,我们对数据库数据更新的流程有了更深入的了解。这个过程中涉及到执行器、引擎、redo log、binlog 等多个环节,每个环节都承担着重要的责任,保证数据的正确性和一致性。希望这篇文章对你有所帮助,如果有任何问题或者想法,欢迎在下方留言与我讨论。

END

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”!

 

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

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

相关文章

PM3328BP-6电源模块PIONEER MAGNETICS

PM3328BP-6电源模块PIONEER MAGNETICS PM3328BP-6电源模块PIONEER MAGNETICS DCS中的先进控制技术 DCS在控制上的最大特点是依靠各种控制、运算模块的灵活组态,可实现多样化的控制策略以满足不同情况下的需要,使得在单元组合仪表实现起来相当繁琐与复杂…

基于GO实现的简易博客,附源码

1、简介 此博客系统主要是基于GO、Gin、Gorm进行开发,以及采用lay-ui框架进行前端界面的开发,项目包含功能众多,基本上涵盖了博客系统的大部分需求。 此项目适合开发者练手学习,同时也适合高校毕业设计的作品。 以下对作品进行…

#经验分享#消防电源强切故障

工业园火灾报警控制器显示,13#厂房电源强切报故障,经过紧急处理,成功解决了故障问题。 据了解,故障原因是71#强切模块被修复大门时损坏模块破碎无法进行修复, 只留有接线底座,测试并检查底座线路正常。 坏…

如何查看jar包的官网地址

https://mvnrepository.com/ 使用artifactId搜索 点击要查看的版本 查看HomePage LicenseApache 2.0CategoriesJSON LibrariesTagsformatjsonOrganizationAlibaba GroupHomePageGitHub - alibaba/fastjson2: 🚄 FASTJSON2 is a Java JSON library with excellent…

Citespace和vosviewer文献计量学可视化SCI论文高效写作方法

【基于Citespace和vosviewer文献计量学相关论文 】 文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体,注重量化的综合性知识体系。特别是,信息可视化技术手段和方法的运用&#xff…

tp6+企业付款到零钱

一 开通条件,就是首先要在微信平台设置好。 以下微信文档里有的,我这里大概掠几项比较重要的。 付款资金 企业付款到零钱资金使用商户号余额资金。 根据商户号的账户开通情况,实际出款账户有做区别: ◆ 默认情况下&#xff0c…

四、kafka集群与可靠性

Kafka集群的目标 1、高并发 2、高可用(防数据丢失) 3、动态伸缩 Kafka集群规模如何预估 吞吐量: 集群可以提高处理请求的能力。单个Broker的性能不足,可以通过扩展broker来解决。 磁盘空间: 比如,如…

C# 生成XML文档中如何去掉 xmlns=““

如果在XML 文档的指定了默认的命名空间,那么产生的文档中将会出现xmlns“”。 如何去掉这个烦人的xmlns“”? 网络上似乎都没有讲明白。有人提示: 当我们在AppendChild的时候,如果ParentNode是带有xmlns属性的,而你新加的节点,在…

SpringBoot 高校实验室资产管理系统-计算机毕设 附源码85189

SpringBoot高校实验室资产管理系统 摘 要 随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使人们的生活与工作方式发生了很大的改观。本课题研究的高校实验室资产管理系统,主要功能模块包括后台首页,轮播图&#…

WindowManager中Surface申请流程

WindowManager中Surface申请流程 1、SurfaceFlinger 和 WindowManager2、WindowManager中Surface申请流程2.1 WMS侧添加界面时scheduleTraversals()2.2 Window更新过程时scheduleTraversals()2.3 Surface初始化申请2.4 简易时序图 3、对应画布Layer创建3.1 简易时序图 android1…

【Vue3 页面美化】常用组件库推荐

Vue 作为一款深受广大群众喜欢的前端框架,拥有众多优秀的开源 UI 组件库,这里整理了一下供大家参考。 这几套框架主要用于后台管理系统和移动端的制作,方便开发者快速开发。 一、PC 端 UI 库 1.1 Element Plus 官网地址:https…

基于阿里云免费算力自建LLM(类GPT)大模型

这会是一个关于 ChatGPT 的系列文章,主要记录老胡日常使用 ChatGPT 的思考和一些有趣的开源项目,然后这些信息我都会汇总到一个 ChatGPT 信息群(免费,目的是为了交流),有兴趣的朋友可以联系我进群 🥳。 目前开源的 LLM…

sql总理论加实践

一、基础查询 DQL语法 SELECT 字段列表 1.设置别名 SELECT 字段1[别名],字段二[别名]......FROM 表名 WHERE 条件列表; 2.查询多个字段 SELECT 字段1,字段2,字段3......FROM 表名; SELECT * FROM 表名; 3.去除重复记录 DISTANT FROM 表明列表 WHERE 条件列表(条件…

Stable Diffusion: 利用Latent Diffusion Models实现高分辨率图像合成

原文链接: Stable Diffusion: 利用Latent Diffusion Models实现高分辨率图像合成 High-Resolution Image Synthesis with Latent Diffusion Models 01 The shortcomings of the existing works?02 What problem is addressed?03 What are the keys to the solutio…

RESTful API 中的 HTTP 方法有哪些?

RESTful API 中的 HTTP 方法有哪些? RESTful API 是一种基于 HTTP 协议的 API 设计风格,它使用 HTTP 协议中的方法来定义对资源的操作。在 RESTful API 中,HTTP 方法主要用于表示对资源的操作,例如获取、创建、更新和删除资源。本…

持 PMP®证书增持 CSPM-2证书,怎么弄?

2023年起,持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2,不用重新考试,不用重新学习,原PMP证书不影响正常使用,相当于多了一个国标项目管理领域的证书。 第一步准备资料 1、填写能力评价表(简历和业绩不用填&am…

自毁便签:MaiFile Privnote

自毁便签:MaiFile Privnote为您提供安全可靠的信息传递 在当今数字化时代,隐私保护成为了人们关注的焦点。MaiFile Privnote作为一种创新的在线服务,为用户提供了一种安全、便捷的方式来发送私密信息,确保信息在传递后能够自动销…

SSM校园二手交易微信小程序-计算机毕设 附源码87210

SSM校园二手交易微信小程序 目 录 1 绪论 1.1 研究背景 1.2国内外研究现状 1.3论文结构与章节安排 2 校园二手交易微信小程序系统分析 2.1 可行性分析 2.1.1技术可行性分析 2.1.2经济可行性分析 2.1.3操作可行性分析 2.1.4需求分析 2.2 系统流程分析 2.2.1 数据流程…

【HTTP】HTTP协议 HTTPS 协议

目录 一、HTTP 🌷1、HTTP是什么? 🌷2、HTTP的工作过程 🌷3、 抓包工具Fiddler的使用 🌷4、HTTP的协议格式(重点) 🌷5、HTTP请求 5.1 请求地址URL 5.2 方法method 5.3 认识 …

日志是什么?耗时2个月搞懂Linux日志

这里写目录标题 日志基本介绍日志管理服务日志轮替 日志基本介绍 日志是用来记录重大事件的工具。 日志文件是重要的系统信息文件,其中记录了很多重要的系统事件。包括用户的登录信息,系统的启动信息,系统的安全信息,邮件相关信息…