事务的四大特性和隔离级别
1、事务的特性(ACID):
原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
一致性(Consistency):执行事务前后,必须是所有的数据都保持一致状态。
隔离性(Isolation):并发事务执行之间无影响,在一个事务内部的操作对其他事务是不产生影响,这需要事务隔离级别来指定隔离性。
持久性(Durability):一旦事务完成,数据库的改变必须是持久化的。
2、事务的隔离级别:
为什么会出现事务的隔离级别呢:因为在企业级应用中(高并发的情况下),多用户访问数据库是常见的场景,这就是所谓的事务的并发,事务与事务之间可能产生的影响,事务并发所可能存在的问题:
脏读:(针对未提交数据)如果一个事务中对数据进行了更新,但事务还没有提交,另一个事务可以“看到”该事务没有提交的更新结果,这样造成的问题就是,如果 第 一 个事务回滚,那么,第二个事务在此之前所“看到”的数据就是一笔脏数据。
不可重复读:(针对其他提交前后,读取数据本身的对比)一个事务两次读同一行数据,可是这两次读到的数据不一样。不可重复读取是指同一个事务在整个事务过 程中 对同一笔数据进行读取,每次读取结果都不同。如果事务1在事务2的更新操作之前读取一次数据,在事务2的更新操作之后再读取同一笔数据一 次,两 次结果是不同的。
幻读:(针对其他提交前后,读取数据条数的对比) 一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据行。
丢失更新:撤消一个事务时,把其它事务已提交的更新的数据覆盖了。
不可重复都和幻读主要的区别是:前者注重的是数据修改,后者是数据添加。
针对并发事务出现的问题,隔离级别就是为了防止这样的事情发生,根据业务的场景而定:
① Read uncommitted (读未提交):最低级别,任何情况都无法保证。
② Read committed (读已提交):可避免脏读的发生。
③ Repeatable read (可重复读):可避免脏读、不可重复读的发生。
④ Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix