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