✅ MySQL 事务 MVCC ROLLBACK


🧠 一、MVCC 与可重复读(REPEATABLE READ)

项目内容
MVCC 概念多版本并发控制,事务中读到的是开启事务时的数据快照
实现机制依赖 Read View + trx_id + Undo Log 实现版本判断
快照读普通 SELECT,使用 MVCC,不加锁,读取历史版本
当前读SELECT … FOR UPDATE / UPDATE,不使用快照,读取当前版本并加锁
默认隔离级别MySQL InnoDB 默认 REPEATABLE READ,快照在事务首次读时固定
插入型幻读快照读无法解决,InnoDB 通过“间隙锁(Gap Lock)”解决

🔬 二、实验验证行为(你亲自操作的)

场景描述验证结果
快照读能否看到别的事务提交的新记录❌ 不能,看到的是旧版本
当前读是否能看到别的事务刚提交的记录✅ 能看到,当前读不走 MVCC
当前读是否加锁✅ 加排他锁,阻塞并发写操作
锁是否在事务中立即释放❌ 不会,直到 COMMIT / ROLLBACK 才释放
如何查看锁持有状态✅ 用 SHOW ENGINE INNODB STATUS + innodb_trx 查看
performance_schema 能否替代老锁表✅ 推荐使用 data_locks 和 data_lock_waits

🔄 三、ROLLBACK 撤销事务

内容点说明与示例简述
作用撤销事务内的所有操作,恢复到事务开始前的状态
常见用法校验失败、异常中断、业务取消、死锁回滚
搭配 SAVEPOINT实现“部分回滚”逻辑控制
行锁释放ROLLBACK 会自动释放当前读加的锁
对 DDL 无效如 ALTER TABLE 会隐式提交,不能被 ROLLBACK 撤销
自动提交下无效autocommit = 1 时每条语句立即提交,ROLLBACK 无效
底层机制依赖依赖 Undo Log 回滚数据,不会写 binlog,Redo 不落盘

🔍 四、事务状态排查方法

工具/命令说明
SHOW ENGINE INNODB STATUS\G查看当前事务、锁、死锁、读视图等 InnoDB 信息
information_schema.innodb_trx查看活动事务、事务ID、锁、回滚等
performance_schema.data_locks替代 innodb_locks,查看当前所有锁持有情况
performance_schema.data_lock_waits查看事务之间的锁等待关系

📚 五、实操项目(高价值)

  • ✅ 快照读实验(多次 SELECT 结果一致)

  • ✅ 当前读实验(FOR UPDATE 加锁)

  • ✅ 插入新记录事务可见性测试

  • ✅ 锁状态监控与观察

  • ✅ ROLLBACK 撤销事务并释放锁

  • ✅ 配合事务工具查看锁结构

  • ✅ 手动设置事务隔离级别,排查幻读来源


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

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

相关文章

经典算法 判断一个图是不是树

判断一个图是不是树 问题描述 给一个以0 0结尾的整数对列表,除0 0外的每两个整数表示一条连接了这两个节点的边。假设节点编号不超过100000大于0。你只要判断由这些节点和边构成的图是不是树。是输出YES,不是输出NO。 输入样例1 6 8 5 3 5 2 6 4 5…

2025年第十六届蓝桥杯省赛JavaB组真题回顾

第16届蓝桥杯省赛已经结束了,第一次参加也是坐牢了4个小时,现在还是来总结一下吧(先声明以下的解法,大家可以当作一种思路来看,解法不一定是正解,只是给大家提供一种能够正常想到的思路吧) 试题…

Spring Boot循环依赖全解析:原理、解决方案与最佳实践

🚨 Spring Boot循环依赖全解析:原理、解决方案与最佳实践 #SpringBoot核心 #依赖注入 #设计模式 #性能优化 一、循环依赖的本质与危害 1.1 什么是循环依赖? 循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系。 典…

【四川省第三届青少年C++算法设计大赛 (小低组) 第 一试】

一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项) 1、计算机中负责执行算术和逻辑运算的部件是() A. 内存 B.CPU C.硬盘 D.鼠标 2、近期备受关注的国产开源生成式人工智能大模型是() A. AlphaChat B. OpenPilot …

【ROS2】行为树 BehaviorTree(五):详细学习端口和黑板

1、构造函数 之前使用的行为树创建节点时,默认的构造函数形如: CalculateGoal(const std::string& name, const NodeConfig& config):SyncActionNode(name,config) {

DIB:Drone in Box- 室内外场景无人机无人化自主巡检技术方案

DIB:Drone in Box- 室内外场景无人机无人化自主巡检技术方案 作为大疆机场3的无人机无人化巡检方案的补充三个自主巡检方案: 方案一、M350AIBOX自主机场-适合室外无人机自主巡检 方案二、M4AIBOX自主机场-适合室内自主巡检 方案三、停机坪AIBOX 自主巡…

基于Android的旅游自助APP(源码+lw+部署文档+讲解),源码可白嫖!

摘要 旅游自助APP设计的目的是为用户提供对景点信息和路线攻略、周边美食等方面的平台。 与PC端应用程序相比,旅游自助的设计主要面向于旅行者,旨在为用户提供一个旅游自助。用户可以通过APP及时景点信息,并对景点进行购票或收藏等。相反&am…

第十九讲 | XGBoost 与集成学习:精准高效的地学建模新范式

🟨 一、为什么要学习集成学习? 集成学习(Ensemble Learning) 是一种将多个弱学习器(如决策树)组合成一个强学习器的策略。它在地理学、生态学、遥感分类等领域表现尤为突出。 📌 应用优势&#…