事务的隔离级别与脏读 不可重复读 幻读
1.特性
原子性: 事务内多个操作要么全部成功,要么全部失败
一致性: 事务前后系统状态是一致的
隔离性: 事务并发执行时,读取不到别的事务的中间状态
持久性: 事务执行前后
2.事务并发导致的脏读 不可重复读 幻读
脏读
A事务读取到B事务的未提交的状态,B事务发生回滚,此时A事务读取到的数据即为脏数据
不可重复读
事务内多次读取的内容不一致,即读取到别的事务update的数据, 针对update操作
解决:使用行级锁,锁定该行,事务A多次读取操作完成后才释放该锁,这个时候才允许其他事务更改刚才的数据。
幻读
事务内多次读取的数据量不一致,针对insert和delete操作
解决:使用表级锁,锁定整张表,事务A多次读取数据总量之后才释放该锁,这个时候才允许其他事务新增或删除数据。
3.隔离级别与脏读 不可重复读 幻读
| 脏读 | 不可重复读 | 幻读 | |
|---|---|---|---|
| read uncommitted | √ | √ | √ |
| read committed | x | √ | √ |
| repeatable read | x | x | √ |
| serializable | x | x | x |
Mysql的默认隔离级别就是Repeatable read

浙公网安备 33010602011771号