事务的四大特性

**事务(Transaction)**是数据库里的一组操作,它们要么全部成功,要么全部失败。没有中间态。

事务的四大特性(ACID)

  1. 原子性(Atomicity):原子性指的是不可再分,事务中的所有操作要么全部完成,要么全部不完成。实现原理依赖日志机制,如InnoDB的重做日志(redo log)和回滚日志(undo log)。
  2. 一致性(Consistency):一致性指的是事务执行前后,数据库都处于一个合法的状态。也就是说,事务必须使数据库从一个一致的状态转变到另一个一致的状态。比如余额不能为负、外键不能断裂等。
  3. 隔离性(Isolation):隔离性指的是多个事务并发执行时,彼此不能“乱入”。隔离性通过锁和MVCC实现。不同隔离级别决定“隔离的程度”。
  4. 持久性(Durability):持久性指的是一旦事务提交,数据必须永久保存。即使机器断电,也要能恢复。InnoDB通过redo log和WAL(Write-Ahead Logging)机制来保证持久性。
  • 注意:只有保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。也就是说,A、I、D是手段,C是目的