事务的四个特性
1. 原子性(Atomicity)
定义:事务中的所有操作要么全部成功,要么全部失败,不存在中间状态。
MySQL实现:
Undo Log:InnoDB在修改数据前先写入Undo Log,记录修改前的数据状态。若事务失败或回滚,利用Undo Log将数据恢复到事务开始前的状态若事务执行到一般崩溃,重启后也会根据
Undo Log自动回滚未完成的事务
2. 一致性(Consistency)
定义:事务执行前后,数据必须从一个有效状态转移到另一个有效状态,所有约束都必须满足。
MySQL实现:
由其他三个特性共同保障
InnoDB通过约束检查、级联操作、触发器等机制共同确保数据始终符合业务规则
3. 隔离性(Isolation)
定义:并发执行的事务之间互相隔离,一个事务的中间状态不应被其他事务看到。
MySQL实现:
锁机制:共享锁、排他锁、意向锁、间隙锁等
MVCC(多版本并发控制)
4. 持久性(Durability)
定义:一旦事务提交,对数据的修改就是永久性的,即使系统崩溃也不会丢失
MySQL实现:
Redo Log:采用WAL(Write-Ahead Logging)机制,先写Redo Log,再异步刷脏页到磁盘。崩溃后通过Redo Log恢复已提交但未写入磁盘的数据BinLog:Server 层记录所有数据变更,用于主从复制和数据恢复