什么是事务?
事务是数据库操作的最小逻辑单元,将多个操作(如增删改查)封装为一个不可分割的整体。例如银行转账(扣A账户余额、加B账户余额)必须作为一个整体执行,要么全部成功,要么全部失败。
事务的四大特性(ACID)
- 原子性(Atomicity)
事务内的所有操作要么全部成功,要么全部失败回滚。例如转账时,若扣款成功但加款失败,则整个操作回滚,双方余额不变。 - 一致性(Consistency)
事务执行前后,数据库必须保持业务规则的一致性。例如转账前后,A+B的总金额应保持不变。 - 隔离性(Isolation)
多个并发事务互不干扰,防止数据混乱。例如两个转账事务同时操作同一账户时,通过锁或MVCC机制保证结果正确。 - 持久性(Durability)
事务提交后,数据永久保存(即使系统崩溃)。例如通过日志(Redo Log)恢复机制确保数据不丢失。
注意事项
- 引擎支持:MySQL的InnoDB引擎支持事务,而MyISAM不支持。
- 默认隔离级别:MySQL默认是可重复读(Repeatable Read),能避免脏读和不可重复读。