




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023七年级数学下册 第四章 三角形4 用尺规作三角形教学实录 (新版)北师大版
- 9 心中的“110”教学设计-2023-2024学年道德与法治三年级上册统编版
- 建筑工程分包设计合同
- 2024-2025学年高中化学 第一章 微型专题(二)元素周期律的应用及元素推断教学实录 新人教版选修3
- 2024年五年级数学上册 八 方程 4列方程解决问题第1课时 倍数问题教学实录 冀教版
- 2024-2025学年高中历史 第7单元 现代中国的科技、教育与文学艺术 第19课 中华人民共和国成立以来的重大科技成就教学实录 新人教版必修3
- 2024-2025学年高中历史 专题三 第二次世界大战 二 第二次世界大战的爆发(1)教学教学实录 人民版选修3
- 1 古诗词三首 四时田园杂兴(其二十五)教学设计-2023-2024学年语文四年级下册统编版
- 2025部编人教版小学二年级数学上册全册教案
- Chapter 1 Buying Snacks(教学设计)-2023-2024学年新思维小学英语2B
- 工艺品加工合同6篇
- 2025年榆林市公共交通总公司招聘(57人)笔试参考题库附带答案详解
- 医院培训课件:《多发性骨髓瘤》
- 3《鸿门宴》课件 2024-2025学年统编版高一语文必修下册
- 2025年乌海职业技术学院单招职业技能测试题库及完整答案一套
- 【新】部编人教版小学4四年级《道德与法治》下册全册教案
- 2025年辽宁石化职业技术学院单招职业倾向性测试题库审定版
- 安徽省六校2024-2025学年高三下学期2月素质检测考试生物学试题(含解析)
- 2025年湖南省长沙市单招职业倾向性测试题库及参考答案
- 10.1溶液的酸碱性教学设计-2024-2025学年九年级化学人教版下册
- 《个体防护装备安全管理规范AQ 6111-2023》知识培训
评论
0/150
提交评论