数据库开发四: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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值