事务隔离机制(hibernate 应用)
来源:互联网 发布:淘宝店铺退款多了封号 编辑:程序博客网 时间:2024/04/30 10:00
1.事务的特性:
acid:atomic原子性不用多说 consistent一致性就是系统的数据不会遭到破坏 isolated隔离性防止同时读取同一条记录 durable持久性保存在db或其它形式的持久设备中
隔离级别的几个重要概念
脏读:事务 A 事务B A对一条记录修改但未提交,B此时读取此条记录,之后Acommit失败
不可重复读:事务 A 事务B A里面执行两次或以上的查询,查询的结果不对,在中间B对此记录改变了
幻读:当读取几条记录后,另外一个事务插入了一条记录,此后的查询会出现原来没有的额外记录
为防止以上的情况,可以采用不同的隔离级别
2.事务并发时可能出现的问题:
1.第一类丢失更新(Lost Update) 时间 事务A 事务B T1 开始事务 T2 开始事务 T3 查询账户余额1000 T4 查询账户余额1000 T5 汇入100元把余额更新1100 T6 提交事务 T7 取出100把余额改成900 T8 撤销更新 T9 余额为1000(丢失更新) 2.脏读(dirty read)读了一个没有提交的事务的数据 时间 事务A 事务B T1 开始事务 T2 开始事务 T3 查询账户余额1000 T4 汇入100元把余额更新1100 T5 查询账户余额1000(脏读) T6 回滚 T7 取款1100 T8 提交事务失败
3.不可重复读(non-repeatable read),同一个事务前后数据不一致,被其它事务所影响
时间
事务A
事务B
T1
开始事务
T2
开始事务
T3
查询账户余额1000
T4
汇入100元把余额更新1100
T5
提交事务
T6
查询账户余额1100
T7
取款1100
T8
提交事务
4.第二类丢失更新(second lost update proplem)
时间
转账事务A
取款事务B
T1
开始事务
T2
开始事务
T3
查询账户余额1000
T4
查询账户余额1000
T5
取出100元把余额更新900
T6
提交事务
T7
存入100
T8
提交事务
T9
把余额为1100(丢失更新)
5.幻读(phantom read),插入和更新
时间
查询事务A
插入事务B
T1
开始事务
T2
开始事务
T3
查询学生人数为10
T4
插入一个新学生
T5
T6
查询学生人数为11
提交事务
T7
T8
提交事务
- 事务隔离机制(hibernate 应用)
- 事务隔离机制(hibernate 应用)
- 关于hibernate一级,二级缓存以及事务隔离机制。
- 关于hibernate一级,二级缓存以及事务隔离机制。
- Hibernate事务隔离机制(乐观锁-悲观锁)
- 事务隔离机制以及hibernate悲观锁和乐观锁
- 事务隔离机制 && Hibernate悲观锁、乐观锁
- Hibernate中的事务隔离
- Hibernate事务隔离级别
- Hibernate 事务隔离级别
- 并行事务隔离机制
- 事务隔离机制(转载)
- 事务隔离机制
- 事务隔离机制
- 事务隔离机制
- oracle事务隔离机制
- mysql 事务隔离机制
- 20hibernate hibernate的性能优化之事务并发和事务隔离机制
- android 动画效果 (转)
- JAVA面试题解惑系列
- 安装RHEL时需要先了解的一些内容
- Java多线程编程总结
- Java中有两种包的导入机制
- 事务隔离机制(hibernate 应用)
- 怎么就成了这样
- 逃离北上广
- awk学习笔记
- int float double 最大值,最小值
- WINCE BSB中不同后缀的文件讲解--.bib文件
- Ubuntu 使用 Discuz搭建论坛
- Oracle 如何修改用户名
- 【淘宝SEO】八类搜索作弊商品的降权时间及其建议