最新获取网站访客qq接口建设企业银行app官方下载

news/2025/9/24 8:14:13/文章来源:
最新获取网站访客qq接口,建设企业银行app官方下载,企业邮箱手机怎么登录,如何把网站主关键词做到百度首页回滚整个事务要怎么清除 binlog 日志#xff0c;InnoDB 又会进行哪些操作#xff1f; 作者#xff1a;操盛春#xff0c;爱可生技术专家#xff0c;公众号『一树一溪』作者#xff0c;专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品#xff0c;原创内容未经授…回滚整个事务要怎么清除 binlog 日志InnoDB 又会进行哪些操作 作者操盛春爱可生技术专家公众号『一树一溪』作者专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品原创内容未经授权不得随意使用转载请联系小编并注明来源。 本文基于 MySQL 8.0.32 源码存储引擎为 InnoDB。 正文 1. 准备工作 创建测试表 CREATE TABLE t1 (id int unsigned NOT NULL AUTO_INCREMENT,i1 int DEFAULT 0,PRIMARY KEY (id) USING BTREE,KEY idx_i1 (i1) ) ENGINEInnoDB DEFAULT CHARSETutf8mb3;插入测试数据 INSERT INTO t1 (id, i1) VALUES (10, 101), (20, 201), (30, 301), (40, 401);示例 SQL /* 1 */ begin; /* 2 */ insert into t1(id, i1)values(50 501); /* 3 */ insert into t1(id, i1)values(60 601); /* 4 */ rollback;每条 SQL 前面的数字是它的编号4 条 SQL 分别为 SQL 1、SQL 2、SQL 3、SQL 4其中SQL 4 是本文的主角。 SQL 2 插入记录 id 50, i1 501 产生的 undo 日志编号为 0。 SQL 3 插入记录 id 60, i1 601 产生的 undo 日志编号为 1。 2. binlog 回滚 示例 SQL 的两条 insert 语句执行过程中会产生 binlog 日志存放到 trx cache 中。 回滚整个事务时事务执行过程中改变插入、更新、删除的数据都不要了产生的 binlog 日志也就没有用了。 回滚整个事务首先要进行的步骤就是 binlog 回滚。从这个步骤的名字来看我们预期 MySQL 会在这一步把 trx cache 中的 binlog 日志都清除。 不过我们要失望了因为这一步什么都没干。 下面是 binlog 回滚的代码 static int binlog_rollback(handlerton *, THD *thd, bool all) {DBUG_TRACE;int error 0;if (thd-lex-sql_command SQLCOM_ROLLBACK_TO_SAVEPOINT)error mysql_bin_log.rollback(thd, all);return error; }从代码可以看到只有 thd-lex-sql_command 为 SQLCOM_ROLLBACK_TO_SAVEPOINT 才会调用 mysql_bin_log.rollback(thd, all) 执行 binlog 回滚操作。 然而执行 rollback 语句时thd-lex-sql_command 为 SQLCOM_ROLLBACK不满足 if 条件上面的代码就什么都不会干了。 那么trx cache 中的 binlog 日志什么时候会清除 别急后面会有专门的小节介绍。 3. InnoDB 回滚 binlog 回滚操作结束之后接下来就是 InnoDB 回滚了。 InnoDB 回滚操作会读取并解析事务产生的所有 undo 日志并执行产生这些 undo 日志的操作的反向操作也就是回滚。 回滚过程中会根据 undo 日志产生的时间从后往前读取并解析日志再执行这条日志对应的回滚操作。 示例 SQL 中执行了两条 insert 语句会产生两条 undo 日志编号分别为 0、1。以主键索引为例回滚过程如下 读取最新的 undo 日志编号为 1。解析 undo 日志得到 id 60。删除 t1 表中 id 60 的记录。读取上一条 undo 日志编号为 0。解析 undo 日志得到 id 50。删除 t1 表中 id 50 的记录。读取上一条 undo 日志没有了InnoDB 回滚操作结束。 4. 提交事务 InnoDB 回滚操作完成之后接下来要怎么办 这其实取决于回滚操作是怎么进行的。 我最初理解的回滚操作是把事务执行过程中改变插入、更新、删除的记录恢复原样就像事务什么都没干过一样。 然而实际情况没有这么理想。 事务执行过程中改变过的那些记录回滚之后 从逻辑上来看恢复了原样确实就像事务什么都没干过一样。从物理上来看可能已经发生了变化因为记录的位置有可能和修改之前不一样。 唠叨这么多就是想说清楚一件事事务的回滚操作不是原地撤销对数据页的修改而是通过再次修改数据页实现的。 既然修改了数据页那就需要执行提交操作才能让这些修改生效。 接下来要执行的操作就是把 InnoDB 回滚操作过程中对数据页的修改提交了也就是提交事务。 不过这里的提交事务和 commit 语句提交事务不一样。 执行 commit 语句时因为有 binlog 和 InnoDB 两个存储引擎需要使用二阶段提交。 事务执行过程中改变插入、更新、删除记录会产生 binlog 日志。 回滚时要把记录再修改回原来的样子。从逻辑上来看记录就像是从来没有发生过变化binlog 日志也就不需要了。 所以InnoDB 回滚完成之后提交事务不需要把 trx cache 中的 binlog 日志写入 binlog 日志文件并刷盘只需要提交 InnoDB 事务就可以了。 关于提交 InnoDB 事务的具体逻辑可以参照第 11 期《InnoDB 提交事务提交了什么》。 5. 清除 binlog 日志 trx cache 中的 binlog 日志有可能一部分存放在内存 buffer 中另一部分存放在磁盘临时文件中。 清除操作需要同时清除 trx cache 内存 buffer 和磁盘临时文件中的 binlog 日志分为两个步骤进行 清空内存 buffer让 trx cache 的 write_pos 指向内存 buffer 的开始处即可。清空磁盘临时文件首先会把文件的 seek offset 设置为 0让文件本身的位置指针指向文件开头处然后截断磁盘临时文件释放文件占用的空间。 前面的 binlog 回滚步骤没有清除事务执行过程中产生的 binlog 日志而是留到 InnoDB 回滚步骤中提交事务完成之后才执行。这是因为 清空磁盘临时文件中 binlog 日志的过程不可逆如果中间出现问题不能回退。InnoDB 回滚步骤中提交事务的容错性更好回滚失败之后就不清除 binlog 日志了也不损失什么。 6. 总结 回滚整个事务主要分为三大步骤。 第 1 步执行 binlog 回滚操作其实什么也没干。 第 2 步执行 InnoDB 回滚操作会把事务执行过程中改变插入、更新、删除的记录恢复原样至少从逻辑上来看是这样的。 最后还会提交 InnoDB 事务让回滚操作对数据页的修改生效。 第 3 步清除事务执行过程中产生的、临时存放于 trx cache 中的 binlog 日志。 本期问题关于本期内容如有问题欢迎留言交流。 更多技术文章请访问https://opensource.actionsky.com/ 关于 SQLE SQLE 是一款全方位的 SQL 质量管理平台覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库为开发和运维提供流程自动化能力提升上线效率提高数据质量。 SQLE 获取 类型地址版本库https://github.com/actiontech/sqle文档https://actiontech.github.io/sqle-docs/发布信息https://github.com/actiontech/sqle/releases数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse

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

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

相关文章

网站设计的灵感来源网站建设需要些什么

随着数字化时代的不断深入,数据隐私保护已经成为了人们越来越关注的焦点之一。而在这个数字化时代的新篇章中,Web3技术作为下一代互联网的代表,正在为数据隐私保护带来全新的创新和可能性。本文将深入探讨数据隐私的重要性,Web3时…

网站建设 核算外贸公司推广

本文主要从 单特征分析,多特征筛选,特征监控,外部特征评估的几个方面对特征数据进行阐述。 来源 : 特征筛选_特征覆盖度怎么算_adamyoungjack的博客-CSDN博客 1. 单特征分析 1.1 简介 好特征可以从几个角度衡量:覆…

主要测试的测试用例

1. 内核态性能测试 # 测试要求# 测试用例步骤 0. 检查BIOS配置,确认设置满足场景要求(NUMA开启和关闭两种场景(海光平台覆盖channel/die),其余设置,请严格按照阿里招标参数BIOS出厂设置定制需求) 1.在被测端和辅…

成都h5模板建站动易网站管理系统教程

远程仓库的使用 要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库。远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某个项目时,需要管理这些远程仓…

详细介绍Seata的AT模式分布式事务

一、在Seata的AT模式中,事务的提交也是分成了2阶段的 一阶段 1、RM 针对本次要执行的本地事务的SQL进行解析,得到SQL的类型、修改的表以及where条件等信息 2、RM 根据 SQL 解析的结果,先进行一次查询,根据查询结果…

网站建设流程图在线制作哪个网站做图文素材多

前言看见头文件中的条件编译就犯怵,不知什么意思,但是,你老师说:”就得那么写“,你照做,但是知其然而不知其所以然。今天分享下是自己的理解~~~纯属个人献丑,新手可阅,老鸟绕道。代码…

自媒体采集网站建设未来最紧缺的十大专业

作为一个打工人 电脑是不是黑屏简直是routine了 我们都知道重启能解决一切问题 但是!! 如果你只有一个鼠标 电脑因为种种原因没法重启 该怎么办呢? 别慌 下面的方法非常灵验 1.按住ctrlShiftEsc 调出任务管理器;此项为必须&#xf…

网站移动端生成器嵌入式软件开发工资

一.sprintf()语法 sprintf() 是一个 C 语言中的函数,用于将格式化的数据写入一个字符串中。它的用法与 printf() 函数相似,printf()函数是将内容输出到屏幕上,而sprintf()函数是将格式化的内容输…

网站并发要求网站程序设计

和之前的ASP.NET MVC中的使用LOG4NET的方法有些不同&#xff0c;这里先记录一下&#xff0c;使用步骤如下 &#xff1a; 1. 建立 ASP.NET CORE项目中&#xff0c;NUGET中搜索log4net后下载安装 2. 根目录建立 log4net.config文件&#xff0c;内容如下&#xff1a; <?xml ve…

dw属于什么网页制作工具seo自助建站平台

各位&#xff0c;vscode的坑&#xff1b; os.getcwd()获取当前文件的位置 例如文件目录级&#xff1a; g:\test\123 vscode 输出的是父目录的位置 实际输出的结果为&#xff1a;g:\test 预期结果:g:\test\123&#xff08;这个才是正确的&#xff09; pycharm os.getcwd() 输出…

高端html5网站建设的思路网站模糊效果

一、概述(Overview) 蓝牙是一种专有的开放式无线技术标准,用于在固定和移动设备之间进行短距离数据交换(使用2400–2480 MHz ISM波段的短波长无线电传输),从而创建具有高度安全性的个人局域网(PANs)。由电信供应商爱立信(telecoms vendor Ericsson)于1994年创建,[1…

知识产权网站建设域名申请哪家好

一.Checkpoints 理论说明有关GG的Checkpoints 在系列一&#xff0c; GG的架构中以说明&#xff1a;OracleGolden Gate 系列一 --GG 架构 说明http://blog.csdn.net/tianlesoftware/article/details/6925907这里在单独拿出来说明一下&#xff0c;因为这是一个较为重要的概念。Ch…

TensorFlow 和 PyTorch两大深度学习框架训练素材,并协作一个电商推荐系统

TensorFlow 和 PyTorch两大深度学习框架训练素材,并协作一个电商推荐系统2025-09-24 08:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

VMware VeloCloud 漏洞分析:未授权远程代码执行全链条攻破

本文深入分析VMware VeloCloud Orchestrator中存在的三个关键漏洞:认证绕过、SQL注入和目录遍历漏洞。通过组合利用这些漏洞,攻击者可在未授权情况下实现远程代码执行,最终控制企业整个国际网络基础设施。SD-PWN 第…

做网站需要的课程优化方案官网

一、Spring bean 1.1、概述 一句话&#xff0c;被Spring容器管理的bean就是Spring bean。 二、Java bean VS Spring bean 2.1、概述 Java bean是程序员自己new 出来的&#xff0c;Spring bean是Spring工厂创建出来的。 三、配置bean的方式 3.1、概述 所谓配置bean&#xff0…

做任务领佣金的网站中国室内设计大奖赛

🚀🚀🚀本文改进:Ghost bottleneck为堆叠Ghost模块 ,与YOLOV8建立轻量C2f_GhostBottleneck 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.Ghostnet介绍 论文: https://arxiv.org/pdf/1911.11907.…

网站建设黄页免费观看济南品牌网站建设价格

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; …

网站怎么备案工业软件开发需要学什么专业

恭喜微软连续 13 年被Gartner评为BI平台领导者。您可以插上耳机&#xff0c;打开音乐来一起欣赏这个过程。原文地址&#xff1a;https://powerbi.microsoft.com/zh-cn/blog/microsoft-named-a-leader-in-gartners-2020-magic-quadrant-for-analytics-and-bi-platforms/被评为第…

wordpress网站监测怎么进入官方网站查询

Docker是一种容器化平台&#xff0c;它可以轻松地封装、分发和运行应用程序和服务。 Docker的基本概念包括&#xff1a; 容器&#xff1a;一个独立运行的、可移植的软件包&#xff0c;包含应用程序、运行环境和依赖项。容器可以在不同的环境中运行&#xff0c;而不受环境差异的…