MySQL事物的隔离级别
| 事物隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交(read-uncommitted) | 是 | 是 | 是 |
| 读提交(read-committed) | 否 | 是 | 是 |
| 可重复读(repeatable-read) | 否 | 否 | 是 |
| 串行化(serializable) | 否 | 否 | 否 |
1.读未提交
在使用这个隔离级别时,仅当另一个事务试图删除或更改被检索的行所在的表时,才会锁定一个事务检索的行,所以可会发生脏读、不可重复读和幻读
2.读提交
该级别(Oracle默认)只能看见已经提交事务所做的改变,可以有效的避免脏读,但是在同一个事务中执行完全相同的select语句时可能看到不一样的结果(不可重复读、幻读)。
3.可重复读
该级别(MySQL默认)确保同一事务的多次执行select操作,会看到同样的数据。它主要针对update、delete操作,会对本事物中满足select操作的数据进行加锁,保证数据不会被修改,从而实现可重复读,但不能满足幻读。
4.串行化
该级别是最高的隔离级别,它会对所有的数据进行加写锁,从而满足不会出现幻读。