事务的基本特征和属性

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

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

 


事务具有的四个属性:

 

 

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

 


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


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


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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值