sql 的四种隔离级别
1、未提交读。
最低的隔离级别(是一种危险的隔离级别,会出现脏读),其含义是允许一个事务读取另外一个事务没有提交的数据。
T2时刻中事务1中扣减了库存,T3时刻中事务2也扣减了库存,但是它也读取到了T2时刻中事务1的操作,因此T3时刻扣减后库存为0,这个时候T5在提交事务后事务1进行回滚,因为第一类丢失更新已经被克服,所以库存最终会出现脏读(库存应该为1才是正确的)。
2、读写提交。
指一个事务只能读取到另外一个事务已经提交的数据。
在T3时刻,因为采用了读写提交的隔离级别,所以事务2不会读取到事务1中未提交的库存1,所以在T3时刻事务2扣除库存后还剩下库存为1,然后提交事务。则库存在T4中就变成了1。在T5时刻,事务1回滚,因为第一类丢失更新已经克服,所以最后的库存结果也变为了1。
3、可重复读。
克服读写提交中出现的不可复读的现象,因为在读写提交的时候,可能出现一些值的变化,影响当前事务的执行。
4、串行化
最高的隔离级别,会要求所有的SQL按照顺序执行,这样就可以克服上述隔离级别出现的问题,所以能够保证数据的一致性。