- 1
- 0
- 约5.88千字
- 约 12页
- 2019-10-27 发布于湖北
- 举报
Hibernate事务与并发问题处理(乐观锁与悲观锁)
目录
一、数据库事务的定义
二、数据库事务并发可能带来的问题
三、数据库事务隔离级别
四、使用Hibernate设置数据库隔离级别
五、使用悲观锁解决事务并发问题
六、使用乐观锁解决事务并发问题
Hibernate事务与并发问题处理(乐观锁与悲观锁)
一、数据库事务的定义
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
1. 原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行
2. 一致性(consistent),事务在完成时,必须使所有的数据都保持一致状态。
3. 隔离性(insulation),由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。
4. 持久性(Duration),事务完成之后,它对于系统的影响是永久性的。
二、数据库事务并发可能带来的问题
如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。由于并发操作带来的数据不一致性包括:丢失数据修改、读”脏”数据(脏读)、不可重复读、产生幽灵数据:
假设数据库中有如下一张表:
1. 第一类丢失更新(lost update): 在完全未隔离事务的情况下,两个事物更新同一条数据资源,某一事物异常终止,回滚造成第一个完成的更新也同时丢失。
在T1时刻开启了事务1,T2时刻开启了事务2,在T3时刻事务1从数据库中取出了id=402881e535194b8f0135194数据,T4时刻事务2取出了同一条数据,T5时刻事务1将age字段值更新为30,T6时刻事务2更新age为35并提交了数据,但是T7事务1回滚了事务age最后的值依然为20,事务2的更新丢失了,这种情况就叫做第一类丢失更新(lost update)。
2. 脏读(dirty read):如果第二个事务查询到第一个事务还未提交的更新数据,形成脏读。
在T1时刻开启了事务1,T2时刻开启了事务2,在T3时刻事务1从数据库中取出了id=402881e535194b8f0135194数据,在T5时刻事务1将age的值更新为30,但是事务还未提交,T6时刻事务2读取同一条记录,获得age的值为30,但是事务1还未提交,若在T7时刻事务1回滚了事务2的数据就是错误的数据(脏数据),这种情况叫做 脏读(dirty read)。
3. 虚读(phantom read):一个事务执行两次查询,第二次结果集包含第一次中没有或者某些行已被删除,造成两次结果不一致,只是另一个事务在这两次查询中间插入或者删除了数据造成的。
在T1时刻开启了事务1,T2时刻开启了事务2,T3时刻事务1从数据库中查询所有记录,记录总共有一条,T4时刻事务2向数据库中插入一条记录,T6时刻事务2提交事务。T7事务1再次查询数据数据时,记录变成两条了。这种情况是虚读(phantom read)。
4. 不可重复读(unrepeated read):一个事务两次读取同一行数据,结果得到不同状态结果,如中间正好另一个事务更新了该数据,两次结果相异,不可信任。
在T1时刻开启了事务1,T2时刻开启了事务2,在T3时刻事务1从数据库中取出了id=402881e535194b8f0135194数据,此时age=20,T4时刻事务2查询同一条数据,T5事务2更新数据age=30,T6时刻事务2提交事务,T7事务1查询同一条数据,发现数据与第一次不一致。这种情况就是不可重复读(unrepeated read)。
5. 第二类丢失更新(second lost updates):是不可重复读的特殊情况,如果两个事务都读取同一行,然后两个都进行写操作,并提交,第一个事务所做的改变就会丢失。
在T1时刻开启了事务1,T2时刻开启了事务2,T3时刻事务1更新数据age=25,T5时刻事务2更新数据age=30,T6时刻提交事务,T7时刻事务2提交事务,把事务1的更新覆盖了。这种情况就是第二类丢失更新(second lost updates)。
三、数据库事务隔离级别
为了解决数据库事务并发运行时的各种问题数据库系统提供四种事务隔离级别:1. Serializable 串行化2.
您可能关注的文档
最近下载
- 安全标志GB+2894-2025 - 副本.docx VIP
- 二维转三维.doc VIP
- 四4班 四年级德育核心素养提升训练(第12周)测试卷及答案.docx VIP
- 15ZJ201_平屋面.pdf VIP
- 基于PLC的自动化生产线设计毕业设计论文.docx VIP
- 两票三制培训精要.pptx
- 伟创(VEICH)AC100系列矢量型变频调速器使用说明书V1.2.pdf
- 标准图集-11G101-2_混凝土结构施工图平面整体表示方法制图规则和构造详图(现浇混凝土板式楼梯)(替代03G101-2).pdf VIP
- 2.4 植物的生长变化(分层作业)科学冀人版三年级下册2026.pdf VIP
- (2026年)成人腰大池引流护理PPT课件.pptx VIP
原创力文档

文档评论(0)