§1 特性
- 原子性:Atomicity
- 一致性:Consistency
- 隔离性:Isolation
- 持久性:Durability
§2 隔离级别
并发事务问题
- 脏读
读到其他事务中 已修改但未提交 的数据 - 不可重复读
一个事务中多次查询 一条数据 但返回不同的结果
这是应为在另一个事务中 修改、删除 这条数据后并提交导致的 - 幻读
一个事务中多次查询 多条数据(范围) 但返回不同的结果
这是应为在另一个事务中向这一范围的数据中 插入 一条或多条数据后并提交导致的
不可重复读 & 幻读 区别
不可重复读 | 幻读 | |
---|---|---|
针对数据量 | 1 | n |
操作 | update / delete | insert |
各个隔离级别
- 读未提交
- 读已提交
- 可重复读
- 串行化
各个隔离级别对比
隔离级别 | 读一致性 | 解决脏读 | 解决不可重复读 | 解决幻读 |
---|---|---|---|---|
读未提交( Read Uncommitted ) | × | × | × | |
读已提交( Tead committed ) | 语句 | √ | × | × |
可重复读( Repeatable Read ) | 事务 | √ | √ | ×(InnoDB 中 √) |
串行化( Serializable ) | 事务 | √ | √ | √ |
因此常使用 InnoDB + Repeatable Read 配置数据库
查看隔离级别
show variables like 'tx_isolation';