数据库的事务存在三个问题,脏读,不可重复读,幻读,可以认为这三个问题是递进的关系。
脏读:一个事务读取到另外一个事务还未提交的数据,
不可重复读:一个事务内,两次读取数据的结果不一致,
幻读:一个事务按照条件查询数据时,没有对应的数据行,但在插入数据时,又发现这行数据已经存在。
结合例子理解:
事务a,此时隔离级别为读未提交(存在脏读,不可重复读,幻读),事务b,对数据进行修改,注意此时事务b没有提交事务,但是事务a已经可以读取到事务b修改后的数据,即脏读。
再将事务a隔离级别调整为读已提交(存在不可重复读,幻读),事务a读取数据,事务b,对数据进行修改,b提交事务,事务a再次读取数据,发现两次数据不一致,即不可重复读。
再将事务隔离级别设置为可重复读(存在脏读),事务a读取数据,发现想要添加的数据不存在,
事务b,增加该数据,事务a添加该数据,又发现该数据已经存在,即幻读