ACID模型是一组数据库设计原则,它们强调对于业务数据和任务关键型应用程序非常重要的可靠性概念。MySQL有诸如InnoDB存储引擎的组件与ACID模型紧密相连,这样数据就不会被损坏,也不会因为软硬件故障使结果失真。当你依赖ACID功能,你不需要造轮子去做一致性检查和故障恢复机制。
如果你有其他软件安全措施、超可靠的硬件或可容忍少量数据丢失或者不一致的的应用程序,你可以调整MySQL设置,以换取更高的ACID可靠性性能或吞吐量。
下面的几节中讨论MySQL,尤其是InnoDB存储引擎,如何与ACID模型协作:
A: Atomic
C: consistency
I: isolation
D: durability
Atomicity
ACID模型的原子性概念主要涉及InnoDB的事务。关联的MySQL功能包括:
自动提交设置
COMMIT语句
ROLLBACK语句
INFORMATION_SCHEMA表的操作数据
Consistency
ACID模型的一致性概念主要涉及内部的Innodb处理来保护崩溃中的数据。相关的MySQL功能包括:
InnoDB doublewrite buffer
InnoDB crash recovery
Isolation
ACID模型的隔离性概念主要涉及InnoDB事务,尤其是每个事务的隔离级别。相关的MySQL功能包括:
自动提交设置。
SET ISOLATION LEVEL语句。
InnoDB锁的底层。在性能调节期间,你可以通过INFORMATION_SCHEMA表看到这些详细信息。
Durability
ACID模型的持久性概念涉及MySQL软件功能和你的硬件配置的协作。因为许多可能性依赖于你的CPU、网络、存储设备,提供这方面的具体指南是最复杂的。MySQL相关的功能包括:
InnoDB doublewrite buffer,通过innodb_doublewrite配置项打开或者关闭
配置项innodb_flush_log_at_trx_commit。
配置项sync_binlog。
配置项innodb_file_per_table。
存储设备中的写缓冲,例如磁盘驱动,SSD,RAID。
在存储设备中的备用电源。
运行MySQL的操作系统,尤其是fsync()系统调用的支持。
不间断电源(UPS)保护所有计算机服务器的电功率和运行MySQL服务器、MySQL数据的存储设备
你的备份策略,例如备份的类型和频率,和备份的保留期
对于分布式的或者托管的数据应用,MySQL服务器所处的硬件的数据中心的特性,和数据中心之间的网络连接