数据库 | Mysql - [事务]
@
§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';
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号