首先引入事务的提交概念
在数据库中,事物的提交(commit)指的是将事务的操作结果永久的保存到数据库中,一个事务可以包含一系列的数据库的操作,包括(增删改查),提交操作则是将这些事务的结果应用保存到数据库中。
不同隔离级别可能会遇到的问题的介绍
1、脏读
一个事务读取了另一个事务未提交的,尚处于临时、未稳定状态的数据,若此数据最终回滚了,那么读取的数据就是无效的,这个操作就被称为脏读
2、幻读
一个事务在执行两次的查询操作中,由于别的事务进行了增加或删除的操作,导致两次的事务查询返回了不同的结果集
3、不可重复读
在同一个事务中,两次读取相同的数据时,由于别的事务修改了该数据,因此两次读取相同的数据得到了不同的两个值
READ UNCOMMITTED(读取未提交)
通俗来说就是允许一个事务读取另一个事务未提交的变更
存在脏读、幻读、不可重复读的问题
READ COMMITTED(读取已提交)
不允许一个数据读取另一个事务未提交的变更
解决了脏读的问题,但是仍然会出现幻读与不可重复读的问题
REPEATABLE READ(可重复读)
在读已提交的基础上又防止了不可重复读的问题
但是仍然会出现幻读的问题
SERIZABLE(串行化)
最高的隔离级别,可以进一步避免幻读的问题