14.2 InnoDB 和 ACID 模型

来源:这里教程网 时间:2026-03-01 15:25:00 作者:

14.2 InnoDB 和 ACID 模型ACID 模型是数据库设计的准则。ACID模型的设计初衷是为了防止在软件或硬件crashes的时候数据损坏。

A: atomicity.

C:    consistency

I:     isolation

D:    durability

Atomicity 原子性      原子性是指一个事务是一个不可分割的工作单元,其中的操作要么都做,要么都不做;如果事务中一个sql语句执行失败,则已执行的语句也必须回滚,数据库退回到事务前的状态。 实现:     InnoDB 存储引擎提供两种事务日志: redo log(重做日志)和undo log(回滚日志)。其中 redo log 用于保证事务持久性undo log则是事务原子性和隔离性实现的基础。      实现原子性的关键,是当事务回滚时能够撤销所有已经成功执行的sql语句。 InnoDB 实现回滚,靠的是undo log:当事务对数据库进行修改时,InnoDB会生成对应的undo log; 如果事务执行失败或调用了rollback,导致事务需要回滚,便可以利用undo log中的信息将数据回滚到修改之前的样子。    undo log属于逻辑日志,它记录的是sql执行的信息。当发生回滚时,InnoDB会根据undo log的内容做与之相反的工作: 对于每个insert,回滚时会执行delete;对于每个delete,回滚时会执行insert;对于每个update,回滚时会执行一个反向的update,把数据改回去。 Consistency 一致性一致性是无论在什么情况下,数据的完整性不被破坏。一致性与mysql与下列特性有关:

InnoDB doublewrite buffer

InnoDB crash recovery

一致性指事务执行结束后,数据库的完整性约束没有被破坏,事务执行的前后都是合法的数据状态。 实现: 可以说一致性是事务追求的终极目标:原子性,持久性,隔离性都是为了保证数据状态的一致性。 Isolation 隔离性 与原子性、持久性侧重于研究事务本身不同,隔离性研究的是不同事务之间的相互影响。隔离性是指,事务内部的操作与其他事务隔离的,并发执行的各个事务之间不能相互干扰。严格的隔离性,对应了事务隔离级别中的serializable(可串行化),但实际应用中处于性能方面的考虑很少会使用可串行化。 Durability 持久性 部分内容参考以下文档:https://www.cnblogs.com/kismetv/p/10331633.html

相关推荐