事物
事物的定义
在执行多条sql时,要么全部成功、要么全部失败。这种把多条语句作为一个整体进行操作的功能,被称为数据库事务。
事物的特性
- 原子性(Atomicity):将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;
- 一致性(Consistency):事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;
- 隔离性(Isolation):如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;
- 持久性(Durability):即事务完成后,对数据库数据的修改被持久化存储。
事物的隔离级别
TIP
事物的隔离级别主要是解决以下几种情况
- 脏读:读取到了其他事物未提交的数据。
- 不可重复读:同一事物内同一sql多次查询,结果是不一致的,不管别的事物有没有修改该数据。
- 幻读:同一sqlA事物执行了两次,中间B事物插入了N条数据,导致A事物第二次查询结果与第一次查询结果不一致。
脏读 | 不可重复读 | 幻读 | |
---|---|---|---|
读未提交 | ✅ | ✅ | ✅ |
读提交 | ❌ | ✅ | ✅ |
可重复读(默认) | ❌ | ❌ | ✅ |
串行化 | ❌ | ❌ | ❌ |