15.2 innodb与ACID特性
ACID模型是一组数据库设计原则,对业务数据和关键程序的可靠性方面非常重要。MySQL包括InnoDB存储引擎等组件,它们与ACID模型紧密结合,因此数据不会被破坏,并且结果不会因软件崩溃和硬件故障等特殊情况而失真。当依赖符合ACID的功能时,无需重新发明一致性检查和崩溃恢复机制。如果有其他软件安全措施,超可靠硬件或业务可以容忍少量数据丢失或不一致,可以调整MySQL设置以牺牲一些ACID可靠性以获得更高的性能或吞吐量。
以下部分讨论MySQL功能,特别是InnoDB存储引擎如何与ACID模型的类别进行交互:
- A: atomicity(原子性)。
- C: consistency(一致性)。
- I: isolation(隔离性)。
- D: durability(持久性)。
原子性
ACID模型的原子性方面主要涉及InnoDB事务。相关的MySQL功能包括:
- Autocommit设置。
COMMIT
子句。ROLLBACK
子句。- INFORMATION_SCHEMA表中的操作数据。
一致性
ACID模型的一致性方面主要涉及Innodb内部在崩溃时如何保护数据,相关的MySQL功能包括:
- InnoDB doublewrite buffer.
- InnoDB crash recovery.
隔离性
ACID模型的隔离方面主要涉及InnoDB事务,特别是适用于每个事务的隔离级别。相关的MySQL功能包括:
- Autocommit设置。
SET ISOLATION LEVEL
子句。- InnoDB锁定的低级细节。在性能调优期间,您可以通过INFORMATION_SCHEMA表查看这些详细信息。
持久性
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()系统调用的支持。
- 运行MySQL服务器和存储MySQL数据的所有计算机服务器和存储设备的不间断电源(UPS)。
- 备份策略, 如备份类型和频率,以及备份的保存时长。
- 对于分布式或托管数据应用,MySQL服务器的硬件所在的数据中心的特定特征,以及数据中心之间的网络连接。