版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
05数据库事务与并发处理1教学内容2数据库事务的概念声明事务边界并发问题设置事务隔离级别使用悲观锁解决并发问题使用乐观锁解决并发问题数据库事务的概念3事务是指一组相互依赖的操作行为,如银行交易,股票交易或网上购物。事务的成功取决于这些相互依赖的操作行为是否都能执行成功,只要有一个操作行为失败,就意味着整个事务的失败,例如:Tony到银行办理转帐事务,把
100元钱转到jack的帐号上,这个事务包含以下操作行为:1.从tom的帐户上减去100元。2.往jack的帐户上增加100元。以上两个操作必需作为一个不可分割的工作单元,任何一个行为的失败整个转帐都不会成功。数据库事务是对现实生活中事务的模拟,它由一组在业务逻辑上相互依赖的SQL语句组成。事务的四个特性4原子性:Atomicity一致性:Consistency隔离性:Isolation持久性:Durability数据库事务的生命周期5声明事务的边界6事务的开始边界事务的正常结束边界(COMMIT):提交事务,永久的保存被事务更新后的数据库状态。事务的异常结束边界(ROLLBACK):撤销事务,使数据库退回到执行事务前的初始状态。通过JDBC
API来声明事务边界7Connection类提供了用于控制事务的方法:setAutoCommit(booleanautoCommit):设置是否自动提交事务commit():提交事务rollback():撤销事务通过Hibernate
API声明事务的边界8声明事务的开始边界Transaction
tx
=
session.beginTransaction();提交事务mit();撤销事务tx.
rollback()多个事务并发运行时的并发问题9单个事务能保证单项业务的数据完整性,但是当多个事务同时运行时可能带来并发问题,具体体现在:第一类丢失更新:在撤销一个事务时,把其它事务提交的更新数据覆盖。脏读:一个事务读到另一事务未提交的更新数据。虚读:一个事务读到另一事务已提交的新插入的数据。不可重复读:一个事务读到另一事务已提交的更新数据。第二类丢失更新:这是不可重复读中的特例,一个事务覆盖另一事务已提交的更新数据。第一类丢失问题时间取款事务转账事务T1开始事务T2开始事务T3查询账户余额为1000元T4查询账户余额为1000元T5汇入100元把余额改为1100元T6提交事务T7取出100元把余额改为900元T8撤销事务余额恢复为1000元10脏读问题时间取款事务转账事务T1开始事务T2开始事务T3T4查询账户余额为1000元T5取出100元把余额改为900元T6查询账户余额为900元(脏读)T7撤销事务余额恢复为1000元T8汇入100元把余额改为1000元T9提交事务11虚读问题时间注册事务统计事务T1T2开始事务开始事务T3统计注册客户总数为10000人T4T5T6注册一个新用户提交事务统计注册客户总数为10001人T7到底哪一个统计数据有效?12不可重复读转账事务时
间 取款事务T1
开始事务元T2T3查询账户余额为1000开始事务T4T5取出100元把余额改为900元查询账户余额为1000元T6T7提交事务查询账户余额为900元T8余额到底是1000元还是900元?13第二类丢失更新时
间 取款事务转账事务开始事务查询账户余额为1000元取出100元把余额改为900元提交事务T1
开始事务T2T3
查询账户余额为1000元T4T5T6T7T8汇入100元把余额改为1100元T9提交事务14数据库的事务隔离级别15隔离级别与并发性能的关系16设定隔离级别的原则17隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数据应用程序,可以优先考虑把数据库系统的隔离级别设为ReadCommitted,它能够避免脏读,而且具有较好的并发性能。尽管它会导致不可重复读,虚读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序悲观锁和乐观锁来解决。在hibernate中设置隔离级别18使用悲观锁19利用悲观锁协调并发事务20使用乐观锁21利用<version>元素对Accounts表中的记录进行版本控制22利用<version>元素对Accounts表中的记录进行版本控制23利用<version>元素对Accounts表中的记录进行版本控制24利用<version>元素对Accounts表中的记录进行版本控制25利用乐观锁协调并发事务的处理26时间取款事务支票转帐事务T1开始事务T2开始事务T3Select
*fromcounts
where
id=1,查询结果显示余额为1000T4Select
*fromcounts
where
id=1查询结果显示余额为1000,乐观锁字段
version值为0T5取出100,updatecounts
set
amount=
900,version=1whereid=1and
version
=
0T6提交事务T7汇入操作:updatecounts
set
amount=1100,
version=1where
id=1
andversion=0,找不到匹配的记录,抛出:StaleObjectStateException实现乐观锁的其它方式27注解的方式加乐观锁28@org.hibernate.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027步步高大一轮复习英语外研版选择性必修第三册 Unit 3 War and peace
- 2026年抖音酒旅云客服考试模拟题及答案详解
- 2026年动物合体模拟题及答案详解
- 2026年11月5日二级结构工程师专业考试模拟题及答案详解
- 2026年中国卫生纸行业全景调研与产业竞争现状报告范文
- 2026年中国制冷空调设备市场调查与发展前景报告
- 2026年报文解析模拟题及答案详解
- 2026年汽车地盘测试题库(含答案)
- 中国有机蔬菜种植行业市场前景预测及投资价值评估分析报告
- 2026年药盒项目投资分析及可行性报告
- 2026年农业综合行政执法试卷(带答案)
- 浙江交投物流集团有限公司2027年校园招聘40人考试备考题库及答案详解
- 新疆交通投资集团有限责任公司笔试题目
- 2025年医养结合岗位招聘面试题库及答案
- 《公共政策导论(第六版)》课件全套 谢明 第1-8章 绪论 -政策终结
- 施工动火作业管控技术方案
- 土石方工程后期维护管理
- 茶叶深加工与综合利用920
- 班级文化建设主题班会凝聚班级力量共筑温馨家园
- 睑板腺按摩技术
- 血透患者脑卒中诊疗
评论
0/150
提交评论