jdbc事务隔离级别

聊聊事务隔离级别....

 

先提几个概念

1、更新丢失

  一个事务更新覆盖了另一个事务的更新。

2、脏读

  一个事务读到了另一个事务还未提交的数据。

3、不可重复读

  1)虚读:一个事务在另一个事务更新前后读到的数据不一致。

  2)幻读:一个事务在另一个事务新增或删除前后读到的数据量不一致。

幻读跟虚读的区别可能就是幻读是查到的是数据量不一致了,而虚读是查到的数据不一致。

 

事务隔离级别有4种,分别是

读未提交   1

  避免更新丢失,但会出现脏读和不可重复读(虚读和幻读)。

读已提交   2

  避免了脏读,但会出现不可重复读(虚读和幻读)。

可重复读   4

  避免了虚读,但会出现幻读。

序列化      8

  事务按顺序执行,先后等待。

 

MySQL的select 默认会生成快照,直接测试不会出现幻读。

通过insert、delete、update测试会出现幻读,说明底层还是读到了另一个事务的数据。

幻读不是问题,问题是因为幻读现象导致的。

posted @ 2019-11-29 11:10  不放糖的咖啡  阅读(158)  评论(0编辑  收藏  举报