ACID 模型是一组数据库设计原则,强调对于业务数据和关键任务应用程序至关重要的可靠性方面。MySQL 包含 InnoDB
存储引擎等组件,这些组件严格遵守 ACID 模型,以便在出现软件崩溃和硬件故障等异常情况时,数据不会损坏,结果也不会发生偏差。当您依赖符合 ACID 的功能时,您无需重新发明一致性检查和崩溃恢复机制的轮子。在您有额外的软件保护措施、超可靠硬件或可以容忍少量数据丢失或不一致的应用程序的情况下,您可以调整 MySQL 设置,以牺牲部分 ACID 可靠性来换取更高的性能或吞吐量。
以下部分讨论了 MySQL 功能(特别是 InnoDB
存储引擎)如何与 ACID 模型的类别交互。
A: 原子性。
C: 一致性。
I:: 隔离性。
D: 持久性。
原子性
ACID 模型的 原子性 方面主要涉及 InnoDB
事务。相关的 MySQL 功能包括
autocommit
设置。COMMIT
语句。ROLLBACK
语句。
一致性
ACID 模型的 一致性 方面主要涉及内部 InnoDB
处理,以保护数据免受崩溃的影响。相关的 MySQL 功能包括
InnoDB
双写缓冲区。参见 第 17.6.4 节,“双写缓冲区”。InnoDB
崩溃恢复。参见 InnoDB 崩溃恢复。
隔离性
ACID 模型的 隔离性 方面主要涉及 InnoDB
事务,特别是应用于每个事务的 隔离级别。相关的 MySQL 功能包括
autocommit
设置。事务隔离级别和
SET TRANSACTION
语句。参见 第 17.7.2.1 节,“事务隔离级别”。InnoDB
锁定 的低级细节。详细信息可以在INFORMATION_SCHEMA
表中查看(参见 第 17.15.2 节,“InnoDB INFORMATION_SCHEMA 事务和锁定信息”)以及性能模式data_locks
和data_lock_waits
表中。
持久性
ACID 模型的 持久性 方面涉及 MySQL 软件功能与您的特定硬件配置的交互。由于您的 CPU、网络和存储设备的功能存在许多可能性,因此这方面最难给出具体的指导原则。(而且这些指导原则可能采取 “购买新硬件” 的形式。)相关的 MySQL 功能包括
InnoDB
双写缓冲区。参见 第 17.6.4 节,“双写缓冲区”。sync_binlog
变量。存储设备(如磁盘驱动器、SSD 或 RAID 阵列)中的写入缓冲区。
存储设备中的电池供电缓存。
运行 MySQL 的操作系统,特别是它对
fsync()
系统调用的支持。一个不间断电源 (UPS),保护所有运行 MySQL 服务器并存储 MySQL 数据的计算机服务器和存储设备的电源。
您的备份策略,例如备份频率和类型,以及备份保留期。
对于分布式或托管数据应用程序,MySQL 服务器硬件所在的特定数据中心的特征,以及数据中心之间的网络连接。