事务的ACID原则
atomic原子性,事务包含一批读写操作要么都提交,要不都回滚,在并发状态下另一个线程看到的这个线程操作的事务一定是完整的,要不都没看见,要么都看见,不存在看见一半的情况。
consiste一致性,对数字的一组特定的约束条件必须成立,例如转账业务中的进账和出账必须能相抵。但是,一致性的这种概念取决于应用程序对不变量的理解,应用程序负责正确定义它的事务,并保持一致性。这并不是数据库可以保证的事情:如果你写入违反不变量的脏数据,数据库也无法阻止你。
isolation隔离性,隔离性意味着,同时执行的事务是相互隔离的:它们不能相互冒犯。在事务执行时不可避免被多个线程同时操作一条数据,例如一个值做加法,A拿到42,进行加一,在加的过程中B也拿到了42,也进行加一操作,这是A把结果43更新,B也把结果43更新,因为发生了两次增长,值应该从42增至44;但由于竞态条件,实际上只增至 43,如下图 。
传统的数据库教科书将隔离性形式化为可串行化(Serializability),数据库确保当多个事务被提交时,结果需要与它们串行运行(一个接一个)是一样的。
durabulity持久性,事务的完成条件需要包括持久化,也就是在存储中保存,即一旦事务成功完成,即使发生硬件故障或数据库崩溃,写入的任何数据也不会丢失。当然,完美的持久性是不存在的 :如果所有硬盘和所有备份同时被销毁,那显然没有任何数据库能救得了你。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本