当前位置: 首页 > >

事务的基本特征和属性

发布时间:

事务是访问并可能更新数据库中各项数据项的一个程序执行单元。


事务应该具有四个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特征


?



事务具有的四个属性:


?


?


事务的原子性:一个事务包含多个操作,这些操作要么全部执行,要么全部不执行。实现事务的原子性,要支持回滚操作,在某个操作失败后,会滚到事务执行之前的状态
?? ? ? ? 回滚实际上是一个比较高层抽象的概念,大多数DB在实现事务时,是在事务操作的数据快找上进行的,如果有错误并不会提交,而在其他支持简单事务的
? ? ? ? ? ? ?系统中,不会在快照上更新,而是直接操作数据库,可以先预演一边所要执行的操作,如果失败则这些操作不会被执行,通过这种方式很简单的实现了原子性


?



事务的一致性:指事务操作前后,数据库中的数据是一致的(符合业务逻辑的完整操作),数据满足业务规则约束(例如:账号金额的转出和转入),与原子性对应



事务的隔离性:并发事物之间互相影响的程度,比如一个事务会不会读取到另一个未提交的事务修改的数据。在事务并发操作时,可能出现的问题有:
? ? ? ? ? ? ?脏读:事物A修改了一个数据,但未提交,事务B读到了事务A未提交的更新结果,如果事务A提交失败,事务B读到的就是脏读
?? ? ? ? 不可重复读:在同一个事务中,对于同一份数据读取到的结果就不一致。不可重复读出现的原因就是事务并发修改记录,要避免这种情况,最简单的办法就是对要修改的记录加锁
? ? ? ? ? ? ? ? ? ? ? ? 但这会导致锁的竞争加剧,影响性能。另一种方法是通过MVCC可以在无锁的情况下,避免不可重复读



事务的持久性:事务提交之后,数据的修改是永久的


?



友情链接: