jockchou

MySQL数据库和ACID模型

ACID模型是一组强调高可靠性的数据库系统设计原则。InnoDB存储引擎坚持ACID原则,确保即使在软件崩溃甚至是硬件故障的情况下,数据也不会损坏。当你需要依赖兼容ACID原则的业务时,你不必重复造轮子去实现一致性检查和崩溃恢复机制。在一些情况下,如果你有额外的安全保证机制,可靠的硬件条件,或者应用能够容忍少量的数据丢失和不一致,你可以调整MYSQL设置,牺牲掉ACID的一些可靠性换取更高的性能和数据吞吐量。

ACID原则

  • A: atomicity (原子性)
  • C: consistency (一致性)
  • I: isolation (隔离性)
  • D: durability (持久性)

Atomicity(原子性)

原子性主要涉及到InnoDB事务。相关的MYSQL特征包括:

  • Autocommit
  • COMMIT语句
  • ROLLBACK语句

Consistency(一致性)

一致性主要涉及到InnoDB内部软件崩溃时的数据保护恢复机器。相关的MYSQL特征包括:

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

Isolation(隔离性)

隔离性主要涉及到InnoDB具体事务的隔离级别。相关的MYSQL特征包括:

  • Autocommit
  • SET ISOLATION LEVEL语句
  • InnoDB锁的低层细节。在性能调优时,你可以通过INFORMATION_SCHEMA表看到这些细节

Durability(持久性)

持久性主要涉及MySQL软件特征与你实际硬件配置的相互作用。这个特性更多的取决于你的CPU,网络,和存储设备的能力。相关的MYSQL特征包括:

  • innodb_doublewrite
  • innodb_flush_log_at_trx_commit
  • sync_binlog
  • innodb_file_per_table
  • 磁盘驱动
  • 操作系统是否支持fsync()系统调用
  • 备份策略
  • 分布式