mysql事务
事务的四个特性
原子性 | 全成功,全失败 | undo日志 |
一致性 | 数据合法的从一种状态转移为另一种状态(符合约束) | undo日志 |
隔离性 | 一个事务不受另一个事务影响 | 锁 |
持久性 | 事务一旦提交就不可改变 | redo日志 |
事务的四个隔离级别
脏读 | 不可重复读 | 幻读 | 数据库默认 | ||
读未提交 | √ | √ | √ | 一个事务读到了另一个事务未提交的数据 | |
读已提交 | × | √ | √ | oracle | 一个事务读到了另一个事务已经提交了的数据 |
可重复读 | × | × | √ | mysql | 一个事务读到了另一个事务已经提交了的数据,但依旧返回之前读到的数据 |
串行化 | × | × | × |
mvcc
隐藏字段(trx_id,roll_pointer)、Undo Log、Read View。
读已提交模式 | 生成新的Read View | 假如事务1的trx_id是1 事务2的trx_id是2。 则事务2只能读到事务1已经提交了的数据 |
可重复读模式 | 不生成新的Read View | 假如事务1的trx_id是1 事务2的trx_id是2。 则事务2无论再次读的时候其trx_id依旧是2所以事务1是否提交,事务2读到的数据都一样 |
可重复读模式 | 不生成新的Read View | 假如事务1的trx_id是1 事务2的trx_id是2。则事务2添加数据行之后,事务1再次读trx_id依旧是1,所以事务1读到的数据依旧和原来一样 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?