脏读(Dirty Read)
假设事务A读取并更新了某对象,之后未提交其操作且回滚。在A更新后回滚前事务B读取到了同一对象。但由于A的更新被回滚,B读到的是一个无意义的值。
脏写(Dirty Write)
假设事务A读取并更新了某对象,之后未提交其操作且回滚。在A更新后回滚前事务B同样更新了该对象,但由于事务A的回滚,导致该对象无论被更新成了什么值都被还原到A更新前的状态,事务B白忙活。
无论何种隔离级别,修改对象的时候X锁一般都会加,因此脏写一般不会发生。
不可重复读(Non-repeatable Read)
假设事务A读取了某对象,之后事务B更新了该对象,再然后事务A又读取了一次该对象。A两次读取同一对象但得到的结果不同,这种情况即为“不可重复读”。
幻读(Phantom Read)
和不可重复读类似,假设事务A按一定规则select出了10条数据,然后事务B插入或删除了符合同样规则的5条数据,再然后A按同样规则select,得到了15条或者5条数据(反正不是10条),这种情况即为“幻读”。