四种隔离级别:read uncommited, read commited, repeatable read, serializable
read uncommited(未提交读): 一个事务中的修改,即使没有提交,其他事务也是可见的。该级别会产生“脏读”的问题。
read commited(提交读):一个事务中的修改在提交前,对其他事务是不可见的。该级别解决了“脏读”问题,但是存在“不可重复读”的问题。
repeatable read(可重复读):保证在一个事务中多次读取已存在的同样的记录,结果是一样的。该级别理论上无法解决“幻读”问题。
serialization(串行化):强制事务串行执行。避免了“幻读”问题。
不可重复读和幻读:不可重复读是在一个事务中连续读记录的同时,有另一个事务对同样的记录修改并提交,可能导致第一个事务两次读取的结果不一致(修改)。而幻读是在一个事务中连续读记录的同时,有另一个事务在该记录范围内插入了新的记录,可能导致第一个事务两次读取的结果不一致(新增)。简单的说,不可重复读是由于并发修改导致,而幻读是由于并发插入导致。