数据库开发四:JDBC数据库开发进阶一(事务的隔离级别)

文章相关视频出处:https://developer.aliyun.com/lesson_1698_13612#_13612

目录

脏读概念举例

不可重复读概念举例

幻读概念举例

事务四大隔离级别


并发事务问题
·脏读:读取到另一个事务的未提交更新数据
·不可重复读:两次读取不一致
·幻读:读到另一事务已提交数据

脏读概念举例

事务1:张三给李四转账100元
事务2:李四查看自己的账户
·t1:事务1:开始事务
·t2:事务1:张三给李四转账100元
·t3:事务2:开始事务
·t4:事务2:李四查看自己的账户,看到账户多出100元(脏读)
·t5:事务2:提交事务
·t6:事务1:回滚事务,回到转账之前的状态

不可重复读概念举例

事务1:酒店查看两次1048号房间状态
事务2:预定1048房间
·t1:事务1:开始事务
·t2:事务1:查看1048号放假状态为空闲
·t3:事务2:开始事务
·t4:事务2:预定1048号房间
·t5:事务2:提交事务
·t6:事务1:再次查看1048号房间状态为使用
·t7:事务1:提交事务
对同一记录的两次查询结果不一致(从控制角度来看,只需锁住满足条件的记录)

幻读概念举例

事务1:对酒店房间预订记录两次统计
事务2:添加一条预定房间记录
·t1:事务1:开始事务
·t2:事务1:统计预定记录100条
·t3:事务2:开始事务
·t4:事务2:添加一条预定房间记录
·t5:事务2:提交事务
·t6:事务1:再次统计预定记录为101条
·t7:事务1:提交事务
对同一表的两次查询不一致(从控制角度来看,要锁住满足条件相似的记录)

事务四大隔离级别

1 Serializable 串行化(基本不用)
·不会出现任何并发问题
·性能最差
2 Repeatable read 可重复读(mysql默认隔离级别)
·防止脏读和不可重复读,不能处理幻读
·性能比 Serializable 好
3 Read committed 读已提交数据(oracle默认隔离级别)
·防止脏读,没有处理不可重复读和幻读
·性能比 Repeatable read好
4 Read uncommitted 读未提交数据(基本不用)
·可能出现任何事务并发问题
·性能最好

select @@tx_isolation查询数据库事务隔离级别

jdbc设置隔离级别connection.setTransactionIsolation(int level)

发布了67 篇原创文章 · 获赞 7 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 像素格子 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览