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 服务器硬件所在的特定数据中心的特征,以及数据中心之间的网络连接。