转载请注明转载自:忆雨林枫

InnoDB和 ACID 模式

 InnoDB和 ACID 模式

ACID模式是数据库的一组设计原则, 它强调可靠性方面,而可靠性对业务数据和关键任务性应用程序非常重要。 MySQL含有的组件中,有与ACID模式紧密结合的InnoDB存储引擎。以至于数据不会被破坏,结果不会因为软件崩溃或硬件故障等特殊情况所扭曲。当您使用遵从ACID的特性时,您不必重新建立一致性检查和故障恢复机制。除非 您有额外的软件保护、超级可靠的硬件,或者应用能够容忍少量数据丢失或不一致。您可以调整MySQL的设置交互一些 ACID的可靠性,来获得更高的性能和吞吐量。

MySQL的特性,特别是InnoDB存储引擎,ACID模式的类别交互:

  • A: 原子性.
  • C: 一致性.
  • I:: 隔离性.
  • D: 持久性.

原子性

ACID模式的 原子性 方面主要涉及 InnoDB事务相关的MySQL特性包括:

  • 设置自动提交。
  • 提交 语句。
  • 回滚语句。
  • INFORMATION_SCHEMA表的数据操作。

一致性

ACID模式的 一致性 方面主要涉及内部InnoDB的处理,来保护数据免受故障。相关的MySQL特性包括:

  • InnoDB doublewrite buffer。
  • InnoDB 故障恢复。

隔离性

ACID模式的 隔离性 方面主要涉及InnoDB事务,尤其是适用于每个事务的隔离级别,相关的MySQL特性包括:

  • 设置自动提交。
  • 设置隔离级别 语句。
  • 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()
  • 不间断电源保护(UPS),保护所有运行MySQL服务器的计算机服务器,和储存MySQL数据的存储设备。
  • 备份策略。如:备份的频率和类型,以及备份的保留期限。
  • 对于分布式或托管数据的应用程序,尤其是 MySQL服务所在发数据中心上的特殊特性,以及数据中心之间的网络连接。