InnoDB 与 ACID 模型

来自泡泡学习笔记
BrainBs讨论 | 贡献2024年7月3日 (三) 14:37的版本 (创建页面,内容为“ACID 模型是一组数据库设计原则,强调对于商业数据和关键任务应用程序而言非常重要的可靠性方面。MySQL 包含诸如 InnoDB 存储引擎等组件,它们严格遵循 ACID 模型,这样数据不会被损坏,结果不会因软件崩溃和硬件故障等异常情况而扭曲。当您依赖于符合 ACID 的功能时,您无需重新发明一致性检查和崩溃恢复机制。在您拥有额外的软件保护措施、超…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

ACID 模型是一组数据库设计原则,强调对于商业数据和关键任务应用程序而言非常重要的可靠性方面。MySQL 包含诸如 InnoDB 存储引擎等组件,它们严格遵循 ACID 模型,这样数据不会被损坏,结果不会因软件崩溃和硬件故障等异常情况而扭曲。当您依赖于符合 ACID 的功能时,您无需重新发明一致性检查和崩溃恢复机制。在您拥有额外的软件保护措施、超可靠硬件或可以容忍少量数据丢失或不一致的应用程序的情况下,您可以调整 MySQL 设置,以牺牲一些 ACID 可靠性来换取更高的性能或吞吐量。


以下各节将讨论 MySQL 的特性,尤其是 InnoDB 存储引擎,如何与 ACID 模型的各个类别相互作用:

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


原子性

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

  • 自动提交设置。
  • COMMIT 语句。
  • ROLLBACK 语句。


一致性

ACID 模型的一致性方面主要涉及 InnoDB 的内部处理,以防止数据在崩溃时受损。相关的 MySQL 特性包括:

  • InnoDB 双写缓冲区。
  • InnoDB 崩溃恢复。


隔离性

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

  • 自动提交设置。
  • 事务隔离级别和 SET TRANSACTION 语句。
  • InnoDB 锁定的底层细节。详情可以在 INFORMATION_SCHEMA 表中查看以及 Performance Schema 的 data_locks 和 data_lock_waits 表。


持久性

ACID 模型的持久性方面涉及 MySQL 软件特性与您特定的硬件配置相互作用。由于取决于您的 CPU、网络和存储设备的功能有很多可能性,因此这方面最难提供具体的指导原则。(而且这些指导原则可能采取“购买新硬件”的形式。)相关的 MySQL 特性包括:

  • InnoDB 双写缓冲区。
  • innodb_flush_log_at_trx_commit 变量。
  • sync_binlog 变量。
  • innodb_file_per_table 变量。
  • 存储设备(如磁盘驱动器、SSD 或 RAID 阵列)中的写入缓冲区。
  • 存储设备中的电池支持缓存。
  • 用于运行 MySQL 的操作系统,特别是其对 fsync()系统调用的支持。
  • 保护运行 MySQL 服务器和存储 MySQL 数据的所有计算机服务器和存储设备电力的不间断电源 (UPS)。
  • 您的备份策略,例如备份的频率和类型以及备份保留期。
  • 对于分布式或托管的数据应用程序,MySQL 服务器所在的数据中心的特定特征,以及数据中心之间的网络连接。