事务
总结
介绍了事务的概念、两种事务提交模式以及事务的 ACID 特性。
概念
事务的概念
事务就是一组原子性的 SQL 查询,或者说一个独立的工作单元。事务内的语句,要么全部执行成功,要么全部执行失败。
大事务
运行时间比较长,长时间都不能提交的事务称为大事务。大事务可能会导致主从延迟,尽量避免。
事务的两种模式
- 自动提交模式:
- 默认是自动提交模式,自动提交模式下的事务是隐式事务。在自动提交模式下,数据库会自动将每条 SQL 语句视为一个独立的事务,无需显式地开启事务
- 适用于数据一致性要求不高的场景,例如插入一条记录
- 手动提交模式
事务的特性(ACID)
- 原子性(atomicity):事务是最小的执行单位,一个事务中的所有操作要么全部提交成功,要么全部失败回滚。
- 一致性(consistency):执行事务前后,数据的状态保持一致性。
- 隔离性(isolation):通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。
- 持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。
A、I、D 是手段,C 是目的。只有保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。
MySQL 保证 ACID 详见 InnoDB引擎如何保证事务的ACID特性?。