事务的特性
ACID 是数据库事务特性的首字母缩写,对应四个英文单词及其含义如下:
- Atomicity(原子性):
事务作为一个不可分割的工作单位,其操作要么全部执行成功,要么全部回滚失败。 - Consistency(一致性):
事务确保数据库从一个合法状态转换到另一个合法状态,维护数据完整性规则。 - Isolation(隔离性):
多个事务并发执行时相互隔离,防止干扰和数据不一致。 - Durability(持久性):
事务提交后对数据的修改永久有效,即使系统故障也不会丢失。
ACID实现机制:
- 原子性:
原子性保证事务中的操作要么全部成功执行,要么全部回滚失效。具体通过undo log(回滚日志)实现:
每次数据修改(如增删改)前,先将原始数据状态记录到undo log中;若事务回滚或异常中断,系统基于undo log执行反向操作(如反向SQL语句),撤销已成功更改,使数据恢复到事务开始前的状态 - 一致性:
一致性确保事务前后数据库符合业务规则(如数据约束、完整性)。其实现依赖两点:
其他三大ACID特性(原子性、隔离性、持久性)共同保障基础数据状态合法
业务逻辑代码需显式定义并校验规则(如转账总额不变),否则仅靠数据库机制无法覆盖复杂业务场景 - 隔离性:
隔离性控制并发事务间的相互影响,防止脏读、不可重复读等问题。主要依靠两种机制:
锁机制:对写入操作加锁(如行锁、表锁),阻止其他事务同时修改相同数据
MVCC(多版本并发控制):为每个事务生成数据快照(基于undo log