14.2 InnoDB and the ACID Model

ACID 模型是一组数据库设计原则,强调可靠性方面对于商业数据和关键人物。

MySQL 包含组件比如InnoDB存储引擎坚持ACID 模型,

这样数据不会被破坏和结果不受特殊条件的弯曲 比如软件crashes 和硬件故障


当你依靠ACID兼容的功能, 你不需要重复发明一致性检查和 crash recovery机制。


如果你有额外的软件保障的情况下, 超可靠的硬件,一个应用可以容忍小量数据丢失或者不一致,


你可以调整MySQL 设置来交换ACID 可靠性的一些对于更好的性能和吞吐量


下面的章节讨论MySQL的特点, 特别是InnoDB存储引擎,与ACID模型交互:



    A: atomicity.

    C: consistency.

    I:: isolation.

    D: durability. 



原子性:

ACID 模型的原子性方面主要涉及InnoDB 事务,MySQl相关的功能包含:

1.自动提交设置

2. 提交语句

3. 回滚语句

4.从INFORMATION_SCHEMA 操作数据


一致性:

ACID 模型的一致性方面主要涉及 internal InnoDB 处理来保护数据(crash),Mysql相关功能包括:

    InnoDB doublewrite buffer.

    InnoDB crash recovery. 


隔离:


ACID 模型的隔离方面主要涉及InnoDB 事务, 特别适用于交易系统

1.Autocommit  自动提交设置

2.SET ISOLATION LEVEL statement. 

3. InnoDB 锁low-level 细节, 在性能调优,你可以查询那些细节通过INFORMATION_SCHEMA tables. 


Durability 耐久性:

ACID 模型的耐久性方面涉及MySQL 软件功能和你的特定的硬件配置交互。

很多可能的取决于你的CPU,网络,存储设备,

1. InnoDB doublewrite buffer,  开启和关闭通过innodb_doublewrite configuration option.


2.Configuration option innodb_flush_log_at_trx_commit. 


3.Configuration option sync_binlog. 

4.Configuration option innodb_file_per_table. 

5.写buffer 到一个存储设备,比如磁盘,ssd或者raid阵列