mysq - 事务(全)l
1. 四大特性
1. (基础)原子性,事务不可分割,要么全部成功,要么全部失败 2. (约束条件)一致性,也可以说成合法性,事务要符合逻辑,数据库限制,比如余额不能为负数,A给B转账,A+B的总额始终相等 3. (手段)隔离性 4. (目的)永久性
2. 隔离级别
1. mysql默认隔离级别可重复读,其他数据级别为读已提交
理解参考:https://blog.csdn.net/weixin_41814871/article/details/124996364

3. 事务日志
1. 事务的隔离性由锁机制实现 2. redo与undo日志都是存储引擎级别的日志
3. redo log: cpu中的数据与磁盘中的数据之间加一个中间文件(redo log),这个文件用于存储本事务做了哪些操作,然后再定时更新到磁盘。cpu到redo log的速度是很快的。
4. undo log: 回滚数据,保证数据回滚到修改之前的状态
5. redo 保证事务的持久性,undo保证事务的原子性
4. 可重复读实现机制
MVCC版本控制
一个事务中,当只有第一次执行select时,会生成一个ReadView,它决定了查找记录的版本,以后的select都根据该版本来操作
5. MVCC(多版本控制)实现机制
1. 三个因素
1. 隐藏字段:a.事务id; b.指针对应修改前的信息 2. undo log版本链 3. readview规则(读已提交,每次查询都会生成一个readview;可重复读,只有第一次查询的时候生成readview)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?