ACID模型
- A :atomicity 原子性
- C :consistency 一致性
- I :isolation 隔离性
- D :durability 持久性
原子性
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。
- 原子性主要涉及事务
- 自动提交设置(SHOW variables like ‘%autocommit%’;)
- COMMIT 声明
- ROLLBACK声明
- INFORMATION_SCHEMA表中的 操作数据
一致性
数据库总是从一个一致性的状态转移到另外一个一致性的状态。
- 一致性主要时防止数据崩溃,数据恢复
- InnoDB doublewriter缓冲区
- InnoDB崩溃恢复
隔离
通常来说,一个事务所做的修改在最终提交之前,对其他事务是不可见的。(隔离级别不同,可见性也不一样)
- 隔离主要涉及事务,事务中的隔离级别
- 自动提交设置
- SET ISOLATION LEVEL声明
- InnoDB锁的底层细节
持久性
一旦事务提交,则其所做的修改就会永久的保存到数据库中。
- 持久性主要涉及硬件存储方面
- doublewriter缓冲区
- 配置选项 innodb_flush_log_at_trx_commit
- 配置选项 sync_binlog
- 配置选项 innodb_file_per_table
- 存储设备(例如磁盘驱动器,SSD或RAID阵列)中的写缓冲区
- 存储设备中由电池支持的缓存
- 用来运行MySQL的操作系统,特别是它对fsync()系统调用的支持
- 不间断电源(UPS)保护运行MySQL服务器并存储MySQL数据的所有计算机服务器和存储设备的电源
- 备份策略,例如备份的频率和类型以及备份保留期
- 对于分布式或托管数据应用程序,MySQL服务器的硬件所位于的数据中心的特定特性,以及数据中心之间的网络连接