MySQL篇:事务
MySQL篇事务一、为什么要有事务数据库为了存储数据而生事务是为了实现ACIDACID原子性要么全做要么全部做–undo log一致性数据在事务前后满足所有规范–业务代码原子性、隔离性、持久性隔离性一个事务的执行不受其余事务影响–MVCC锁持久性提交的数据不可以丢失–redo log二、三个核心日志1.undolog逻辑日志作用保证事务原子性为MVCC提供支持1.把旧值写入undolog2.修改 Buffer Pool 里的数据页。3.记录回滚指针这行记录的回滚指针会找到undolog的旧值用于回滚如果需要回滚就沿着回滚指针找到旧值如果事务未提交那么undolog就不可以删除因为MVCC要通过它来查询历史版本的数据2.redolog物理日志每次直接修改磁盘太慢了所以会先写日志在异步刷盘1.修改在内存中的数据页2.写入redolog把那个表中的那个页偏移量多少写了什么记下来3.返回成功只要redolog写成功了就会回复客户端提交成功数据页在等空闲的时候在慢慢刷盘4.异步刷盘后台线程将脏页数据刷入磁盘3.binlog记录所有操作用于数据恢复与主从复制redolog与binlog逻辑必须一致否则主从数据会乱。流程1.prepare阶段redolog写入并刷盘状态为prepare2.写binlogbinlog日志写入3.commit阶段redolog状态改为commit崩溃时恢复:redolog是commit直接提交redolog是prepare但binlog不完整回滚redolog是prepare且binlog完整提交MVCC实现由回滚指针、undilog、readview1、readview决定可以看什么事务第一次执行查询是会生成一个readview然后会通过特定算法判断这个事务他可以看见的版本2、undolog通过回归指针找到历史版本在通过readview决定可以看到那个版本这样就比避免不可重复读的问题读当前读Select for update、update等会读取最新版本并且加锁防止篡改快照读普通的Select通过readview找到可见版本隔离级别与readviewRC隔离级别下每次查询都会生成新的readviewRR会使用事务一开始生成的Readview幻读MVCC解决的是快照读的幻读问题当前读是使用NEXT-Key Lock解决的他是行锁与间隙锁的组合即防止修改记录也防止修改记录的间隙大事务风险1.undolog膨胀大事务长时间不提交undolog不清理undolog可能被写满2.锁持有时间长由于行锁间隙锁一致不释放阻塞其余请求连接池打满3.大事务的binlog一次性写入从库导致从库瞬间延迟4.崩溃恢复慢未提交的大事务回滚时间长排查-- 查找运行超过 30 秒的事务 SELECT * FROM information_schema.INNODB_TRX WHERE trx_started DATE_SUB(NOW(), INTERVAL 30 SECOND)\G -- 找到对应的连接获取执行的 SQL SELECT * FROM information_schema.PROCESSLIST WHERE ID [thread_id]\G -- 紧急处理杀掉连接 KILL [thread_id];事务失效1.非public方法因为Spring AOP默认只代理public方法2.同类方法调用一个方法调用加入了transactional注解的方法不会走代理注解失效3.异常被捕获在方法内部加入了try-catchSpring接收不到异常信号4.非RuntimeException默认只会回滚RuntimeException 与Error 可以指定rollback出现异常就要回滚5.传播属性设置不当Propagation.REQUIRES_NEW会让外部事务挂起内部事务独立提交。如果内部事务回滚外部事务捕获了异常继续提交就会导致部分数据不一致。

相关新闻

2026年上海仿古地砖供应商推荐:读懂古建地面的选择逻辑

2026年上海仿古地砖供应商推荐:读懂古建地面的选择逻辑

摘要: 在上海的古建修缮与禅意空间营造中,仿古地砖的选择关乎整体气韵与长期耐用性。本文将围绕上海仿古地砖厂家推荐这一线索,深度解析仿古地砖的核心价值与技术原理,并以上海高新技术企业上海朵颐新材料科技有限公司为观察样本&…

2026/7/19 22:50:53阅读更多 →
2026企业AI Agent工具实测横评:Claude Code平替选型指南

2026企业AI Agent工具实测横评:Claude Code平替选型指南

2026企业AI Agent工具实测横评:Claude Code平替选型指南最近我作为企业数字化选型负责人,花了三周时间调研了国内市场多款主流的AI Agent生产力工具,覆盖日常办公、轻量开发、流程自动化等多个核心场景,最终选择了飞书 aily&#…

2026/7/21 10:43:09阅读更多 →
点时数据不是历史快照:用双时间轴避免回测偷看修订值

点时数据不是历史快照:用双时间轴避免回测偷看修订值

点时数据不是历史快照:用双时间轴避免回测偷看修订值 量化回测中的未来函数不只来自错误的 shift。更隐蔽的情况是:研究者下载了一份今天看来完整、正确的历史表,然后默认这些数值在过去当时也已经可见。财务数据会延迟发布,宏观数…

2026/7/21 9:31:00阅读更多 →
延迟和丢包监控工具对比:运维场景下该怎么选

延迟和丢包监控工具对比:运维场景下该怎么选

做跨境运营和网络运维,延迟和丢包是最常遇到的两种异常。线路质量好不好,账号稳不稳定,很大程度取决于这两个指标。但市面上能测延迟和丢包的工具不少,从命令行到可视化平台,各有侧重。选哪个来搭监控体系,…

2026/7/21 17:08:00阅读更多 →
内存泄漏系列专题分析之二十八:内存占用测试report结果过程计算方式和Camera进程各种内存指标dump方式

内存泄漏系列专题分析之二十八:内存占用测试report结果过程计算方式和Camera进程各种内存指标dump方式

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之二十七:内存占用测试Camera相机进程内存指标分布report概述ok 这一篇我们开始讲: 内存泄漏系列专题分析之二十八:内存占用测试report结果过程计算方式和Camera进程各种内存指标dump方…

2026/7/21 17:08:00阅读更多 →
掌握技术面试的7个突破点:基于LeetCode-Questions-CompanyWise的深度解析

掌握技术面试的7个突破点:基于LeetCode-Questions-CompanyWise的深度解析

掌握技术面试的7个突破点:基于LeetCode-Questions-CompanyWise的深度解析 【免费下载链接】LeetCode-Questions-CompanyWise Contains Company Wise Questions sorted based on Frequency and all time 项目地址: https://gitcode.com/GitHub_Trending/le/LeetCod…

2026/7/21 17:08:00阅读更多 →
WPS AI批量处理失效?深度解析API调用瓶颈、权限断点与格式兼容性黑盒(附诊断清单)

WPS AI批量处理失效?深度解析API调用瓶颈、权限断点与格式兼容性黑盒(附诊断清单)

更多请点击: https://intelliparadigm.com 第一章:WPS AI批量处理失效现象全景扫描 WPS AI的批量处理功能在实际办公场景中频繁出现“静默失效”——界面无报错、进度条正常推进,但目标文档未被实际处理。该现象并非偶发,而是覆盖…

2026/7/21 17:08:00阅读更多 →
免费网页存档编辑器:无需安装,浏览器内轻松修改20+款游戏存档

免费网页存档编辑器:无需安装,浏览器内轻松修改20+款游戏存档

免费网页存档编辑器:无需安装,浏览器内轻松修改20款游戏存档 【免费下载链接】savegame-editors A compilation of console savegame editors made with HTML5 technologies. 项目地址: https://gitcode.com/gh_mirrors/sa/savegame-editors 还在…

2026/7/21 17:08:00阅读更多 →
Java Diff Utils 终极企业级文本差异检测与处理完整解决方案

Java Diff Utils 终极企业级文本差异检测与处理完整解决方案

Java Diff Utils 终极企业级文本差异检测与处理完整解决方案 【免费下载链接】java-diff-utils Diff Utils library is an OpenSource library for performing the comparison / diff operations between texts or some kind of data: computing diffs, applying patches, gene…

2026/7/21 17:05:59阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/20 18:51:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/20 18:51:18阅读更多 →