事务并发会导致脏写(Dirty Write)、脏读(Dirty Read)、不可重复读(Non-Repeatable Read)和幻读(Phantom)问题。
脏写(Dirty Write)
如果一个事务修改了另一个未提交的事务修改过的数据,就造成了脏写。Session A开启一个事务,然后读取了SessionB未提交的数据进行修改,修改完后Session A提交,然后SessionB rollback了当前事务,就出现了Session A发现自己明明做了修改并提交成功,但实际上记录并没有更新,这就是脏写。
脏读(Dirty Read)
事务A读取了事务B更新未提交的数据,然后B回滚操作,那么A读取到的数据是脏数据。
不可重复读(Non-Repeatable Read)
在同一个事务里,对同一条数据两次读取,两次读取的数据不一样。事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。