Java面试总结(事务的隔离级别)

事物的隔离级别分为下列四种:

第一:读取未提交数据(READ_UNCOMMITTED)

现象:脏读。

脏读产生原因就是当前事物可以读取到其他事物未提交的数据

第二:读取提交数据(READ_COMMITTED)

现象:不可重复读,幻读(避免脏读)

在事物T1读取某一数据时,事物T2将数据修改之后并不阻塞T1读取数据,T1再次读取该数据就会得到前后不一致的情况,所以称之为不可重复读,不可重复读并不是问题。

第三:可重复读(REPEATEABLE READ)

现象:幻读,避免脏读,不可重复读

保证事物在任意时刻读取的数据前后保持一致。幻读产生原因就是因为可重复读造成的,当事物T1在t1时刻读取到某个数据块时,T2在t2时刻插入了某条数据到这个块中,此时T1在t3时刻也想插入某条数据到这个块中会惊奇的发现插入不进去,但是查询到的块中并没有这条数据(这条数据已经被T2插入了,由于要保持可重复读的特性,所以T1是看不到T2插入的那条数据的,因为T1其实读的是一个旧的快照)

第四:串行化(SERIALIZABLE)

现象:避免了脏读,可重复读,不可重复读

转载于:https://my.oschina.net/kyuan2cn/blog/1633771

你可能感兴趣的:(Java面试总结(事务的隔离级别))