ACID 模型是一组数据库设计原则,强调了业务数据和 mission-critical 应用程序的可靠性方面。MySQL 包括组件,如 InnoDB
存储引擎,它们紧密遵循 ACID 模型,以确保数据不被损坏,结果不被异常条件(如软件崩溃和硬件故障)所扭曲。当您依赖 ACID 兼容功能时,不需要重新发明一致性检查和崩溃恢复机制。在某些情况下,您可以调整 MySQL 设置,以换取更高的性能或吞吐量。
以下部分讨论 MySQL 功能,特别是 InnoDB
存储引擎如何与 ACID 模型的类别交互:
-
A:原子性。
-
C:一致性。
-
I::隔离。
-
D:持久性。
原子性
ACID 模型的 原子性 方面主要涉及 InnoDB
事务。相关的 MySQL 功能包括:
-
The
autocommit
设置。 -
The
COMMIT
语句。 -
The
ROLLBACK
语句。
一致性
ACID 模型的 一致性 方面主要涉及内部 InnoDB
处理,以保护数据免受崩溃的影响。相关的 MySQL 功能包括:
-
The
InnoDB
双写缓冲区。见 第 17.6.4 节,“双写缓冲区”。 -
InnoDB
崩溃恢复。见 InnoDB 崩溃恢复。
隔离
ACID 模型的 隔离 方面主要涉及 InnoDB
事务,特别是每个事务的 隔离级别。相关的 MySQL 功能包括:
-
The
autocommit
设置。 -
事务隔离级别和
SET TRANSACTION
语句。见 第 17.7.2.1 节,“事务隔离级别”。 -
低级别的
InnoDB
锁定详细信息。详细信息可以在INFORMATION_SCHEMA
表(见 第 17.15.2 节,“InnoDB INFORMATION_SCHEMA 事务和锁定信息”)和 Performance Schemadata_locks
和data_lock_waits
表中查看。
持久性
ACID 模型的 持久性 方面涉及 MySQL 软件功能与您的硬件配置的交互。由于 CPU、网络和存储设备的多种可能性,这方面是最复杂的,需要提供具体的指导方针。(这些指导方针可能以 “购买新硬件” 的形式出现。)相关的 MySQL 功能包括:
-
The
InnoDB
双写缓冲区。见 第 17.6.4 节,“双写缓冲区”。 -
该
sync_binlog
变量。 -
该
innodb_file_per_table
变量。 -
存储设备中的写缓冲区,如磁盘驱动器、SSD 或 RAID 阵列。
-
存储设备中的电池备份缓存。
-
用于运行 MySQL 的操作系统,特别是其对
fsync()
系统调用的支持。 -
保护 MySQL 服务器和存储 MySQL 数据的所有计算机服务器和存储设备的不间断电源供应(UPS)。
-
您的备份策略,如备份频率和类型,以及备份保留期。
-
对于分布式或托管数据应用程序,MySQL 服务器所在数据中心的特征,以及数据中心之间的网络连接。