jdbc事务隔离级别
聊聊事务隔离级别....
先提几个概念
1、更新丢失
一个事务更新覆盖了另一个事务的更新。
2、脏读
一个事务读到了另一个事务还未提交的数据。
3、不可重复读
1)虚读:一个事务在另一个事务更新前后读到的数据不一致。
2)幻读:一个事务在另一个事务新增或删除前后读到的数据量不一致。
幻读跟虚读的区别可能就是幻读是查到的是数据量不一致了,而虚读是查到的数据不一致。
事务隔离级别有4种,分别是
读未提交 1
避免更新丢失,但会出现脏读和不可重复读(虚读和幻读)。
读已提交 2
避免了脏读,但会出现不可重复读(虚读和幻读)。
可重复读 4
避免了虚读,但会出现幻读。
序列化 8
事务按顺序执行,先后等待。
MySQL的select 默认会生成快照,直接测试不会出现幻读。
通过insert、delete、update测试会出现幻读,说明底层还是读到了另一个事务的数据。
幻读不是问题,问题是因为幻读现象导致的。
作者:不放糖的咖啡
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.