镰鼬LL

导航

 
InnoDB引擎中的事务符合ACID特性,即
A,原子性 atomicity
B, 一致性 consistency
I , 隔离性 isolation
D,持久性 durability
正是由于事务的ACID特性,使得事务可以将数据库从一个一致性状态转换到另一个一致性状态
下面分类说明
 
1,原子性。在一个事务中存在多个操作,原子操作使得一个事务的多个操作要么都完成,要么都不完成,不存在完成一部分操作的情况。InnoDB通过redolog和undolog来保证原子性。复数操作都完成,则提交(commit),一旦在某一步失败 则回滚(rollback)。如果在某一步宕机,则需要crash recover。
 
2,一致性。一致性指将数据库从一个一致性状态转换到另一个一致性状态,是否有些眼熟,这正是事务的特性,一致性是事务最基础的特性,可以说其他三个特性是为了保证一致性而存i在的。一致性是由redolog和undolog实现的。一致性可以和原子性看起来相似,我认为可以这样理解,原子性是一致性的部分,,原子性保障的是单个事务的一致性,而在并发条件下,原子性无法保证多个事务的一致性。例:事务1 A给B转账100,事务2,C给B转账100,这是事务1,2都成功,但事务izh1提交时覆盖了事务2的提交,导致整体一致性被破坏。
 
3,隔离性。隔离性要求读写事务对象对其他事务的操作对象能相互分离,即事务提交前对其他事务不可见。通过锁和mvcc来实现
 
4,持久性。事务一旦提交,则修改永久生效,无论宕机等故障。通过redolog实现。具体是事务在提交之前先将操作记录的备份固化到磁盘上,成功后再提交事务(二阶段提交)。
posted on 2021-07-01 21:36  镰鼬LL  阅读(79)  评论(0)    收藏  举报