14.2 InnoDB 和 ACID 模型

ACID模型是一组数据库设计原则,这些原则强调了对于业务数据和关键任务应用程序很重要的可靠性方面。 MySQL 包含诸如InnoDB存储引擎之类的组件,这些组件与 ACID 模型紧密相关,因此数据不会损坏,结果不会因软件崩溃和硬件故障等异常情况而失真。当您依靠符合 ACID 的功能时,无需重新发明一致性检查和崩溃恢复机制。如果您有其他软件保护措施,超可靠的硬件或可以容忍少量数据丢失或不一致的应用程序,则可以调整 MySQL 设置以牺牲一些 ACID 可靠性,以获得更高的性能或吞吐量。

以下各节讨论 MySQL 功能(尤其是InnoDB存储引擎)如何与 ACID 模型的类别进行交互:

  • A :原子性。

  • C :一致性。

  • I: :隔离。

  • D :耐久性。

Atomicity

ACID 模型的“原子性”方面主要涉及InnoDB transactions。相关的 MySQL 功能包括:

  • Autocommit setting.

  • COMMIT statement.

  • ROLLBACK statement.

  • INFORMATION_SCHEMAtable 中的操作数据。

Consistency

ACID 模型的“一致性”方面主要涉及内部InnoDB处理,以防止数据崩溃。相关的 MySQL 功能包括:

Isolation

ACID 模型的“隔离”方面主要涉及InnoDB transactions,尤其是适用于每个事务的isolation level。相关的 MySQL 功能包括:

  • Autocommit setting.

  • SET ISOLATION LEVEL声明。

  • InnoDB locking的底层详细信息。在性能调整期间,您可以通过INFORMATION_SCHEMAtable 查看这些详细信息。

Durability

ACID 模型的“耐用性”方面涉及与您的特定硬件配置交互的 MySQL 软件功能。由于取决于您的 CPU,网络和存储设备的功能的可能性很多,因此为具体的准则提供最复杂的方面。 (这些准则可能采取购买“新硬件”的形式.)相关的 MySQL 功能包括:

  • InnoDB doublewrite buffer,由innodb_doublewrite配置选项打开和关闭。

  • 配置选项innodb_flush_log_at_trx_commit

  • 配置选项sync_binlog

  • 配置选项innodb_file_per_table

  • 存储设备(例如磁盘驱动器,SSD 或 RAID 阵列)中的写缓冲区。

  • Batteries 后备存储设备中的缓存。

  • 用于运行 MySQL 的 os,特别是它对fsync()系统调用的支持。

  • 不间断电源(UPS)保护运行 MySQL 服务器并存储 MySQL 数据的所有计算机服务器和存储设备的电源。

  • 您的备份策略,例如备份的频率和类型以及备份保留期。

  • 对于分布式或托管数据应用程序,MySQL 服务器的硬件所位于的数据中心的特定特性,以及数据中心之间的网络连接。